laravel - 在用户登录页面后添加路由
问题描述
我将背包 4 用于 laravel(laravel 8)并且无法为用户页面编写路线。登录后用户必须获取 /user/dashboard 或 /dashboard,但用户被重定向到 /admin/dashboard。我怎么解决这个问题?
网页.php
Route::get('/', function() {
return redirect()->route('backpack.auth.login');
});
Route::get('/user/dashboard', [DashboardUserController::class, 'index'])->middleware(['web','admin']);
解决方案
如果您的用户永远不需要使用 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);
}
- 将新的中间件添加到 Backpack 的默认中间件集中
config/backpack/base.php
。打开文件并查找middleware_class
条目(很可能在第 220 行附近)。添加\App\Http\Middleware\RedirectToDashboard::class
到数组中。 - 以普通用户身份登录 Backpack 并检查您是否被重定向。
推荐阅读
- visual-studio - VS2019 + Clang 无法打开'libboost_date_time-clangw10-mt-gd-x32-1_73.lib':没有这样的文件或目录
- mysql - 当数据集中 2 个数据表中的 1 个返回空行时,Crystal Report 不显示数据
- apache-spark - 将 KAFKA json 消息转换为案例类,并使用 RDD 方法使用 play json 将其保存到 Cassandra
- javascript - 如何使用地图功能的承诺在javascript中同步运行?
- python - 使用 python asyncio 运行两个无限任务
- python - 创建具有重复结构的字符串
- django - NameError:我的 Django 代码中未定义名称“ForeignKey”
- powershell - PowerShell:方法调用失败,因为 ... 不包含名为
- c++ - unreachable-code 在 C++11 中,什么可能导致这种情况?
- javascript - 在索引值函数中检索 javascript 变量的 json 值