在用户登录页面后添加路由
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
。
【讨论】:
感谢您的评论,但它不起作用。 尝试清除配置和路由缓存以上是关于在用户登录页面后添加路由的主要内容,如果未能解决你的问题,请参考以下文章