在用户登录页面后添加路由

Posted

技术标签:

【中文标题】在用户登录页面后添加路由【英文标题】:add routes after login page for user 【发布时间】:2021-12-12 14:10:12 【问题描述】:

我为 laravel(laravel 8) 使用背包 4,无法为用户页面编写路由。登录后用户必须获取 /user/dashboard 或 /dashboard,但用户被重定向到 /admin/dashboard。我该如何解决这个问题?

web.php

Route::get('/', function() 
    return redirect()->route('backpack.auth.login');
);
Route::get('/user/dashboard', [DashboardUserController::class, 'index'])->middleware(['web','admin']);

【问题讨论】:

【参考方案1】:

如果您的用户永远不需要使用 Backpack 并且应该只能查看仪表板,您可以向 Backpack 的中间件集添加一个新的中间件,以检查您的用户是管理员还是普通用户,以在以下情况下重定向他们他们不是管理员。

因为 Backpack 自己注册登录路由,所以您不能在注册时将中间件添加到路由中。相反,您需要将中间件添加到 Backpack 的 admin 中间件组。这就是添加到所有管理路由中的那个。

步骤:

    创建新的中间件:
php artisan make:middleware RedirectToDashboard
    app/Http/Middleware/RedirectToDashboard.php打开新的中间件 将handle 方法更改为如下所示:
public function handle(Request $request, Closure $next)

    if($request->user()->isNormalUser())  // You need to change this to the check if the user is a normal user, that's specific to your application
        return redirect()->to('dashboard'); // 'dashboard' is the name of your route, you may need to change it.
    

    return $next($request);

    config/backpack/base.php 中将新的中间件添加到 Backpack 的默认中间件集中。打开文件并查找middleware_class 条目(很可能在第220 行附近)。将\App\Http\Middleware\RedirectToDashboard::class 添加到数组中。 以普通用户身份登录 Backpack 并检查您是否被重定向。

【讨论】:

我已经完成了,但是我得到了这个错误:Error Call to a member function isNormalUser() on null 您需要更改方法以使用您的逻辑来确定您的用户是普通用户还是管理员。【参考方案2】:

/admin 前缀来自文件:config/backpack/base.php。 从文件中删除route_prefix

您的用户将被重定向到/dashboard

【讨论】:

感谢您的评论,但它不起作用。 尝试清除配置和路由缓存

以上是关于在用户登录页面后添加路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5登录后重定向到特定路由

页面刷新后如何保持用户登录

如何在 React 中登录页面后配置侧边栏导航中的路由?

Angular2 - 具有登录结构的路由器插座

如何配置webconfig避免不通过密码直接登录到页面

登录页面不会重定向到路由到登录页面