如何解决如何将管理员重定向到特定页面并将用户重定向到另一个页面 - Laravel 8 jetstream
我正在尝试将管理员重定向到管理面板页面,并将用户重定向到主页
我为用户类型创建了新字段,并在数据库中添加了“admin”值
$table->string('usertype')->nullable();
然后我创建了这个中间件(AdminMiddleware):
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request,Closure $next)
{
if(Auth::user()->usertype == 'admin')
{
return $next($request);
}
else
{
return redirect('/dashboard');
}
}
}
然后我将它添加到内核:
'admin' => \App\Http\Middleware\AdminMiddleware::class,
然后我将函数添加到 RouteServiceProvider 并导入类:
public const HOME = '/dashboard';
protected function redirectTo()
{
if(Auth::user()->usertype == 'admin')
{
return 'panel';
}
else
{
return 'dashboard';
}
}
然后我将路由添加到 web.php:
Route::get('/',function () {
return view('index');
});
Route::middleware(['auth:sanctum','verified'])->get('/dashboard',function () {
return view('index');
})->name('dashboard');
Route::group(['middleware' => ['auth:sanctum','auth','admin','verified']],function() {
Route::get('/panel',function () {
return view('admin.dashboard');
});
});
我创建了两个帐户,其中一个是管理员,用户类型的值为“admin” 但是当我登录时它仍然将我重定向到主页
我在这里做错了什么?
解决方法
我在我的应用中使用了一种简单的方法。
您不需要为此目的的中间件。以 HomeController
或任何您想要的名称创建控制器。
在您 LoginController
中,将属性 redirectTo
更改为简单的路线。例如 '/home' 甚至 /
用于超级简单的路由。
现在在 routes/web.php
中添加这条指向 HomeController
中方法的路由。
Route::get('/home','HomeController@redirectUser');
或
Route::get('/','HomeController@redirectUser');
另外创建您想要重定向到的路由。
Route::group(['middleware' => ['auth:sanctum','verified']],function () {
Route::get('/panel',function () {
return view('admin.dashboard');
});
});
您还可以为多个用户创建路由。
现在在您的 HomeController
中,在 redirectUser()
方法中,添加您的需求。
if (auth()->user()->usertype == 'admin') {
return redirect(url('route url'));
} else {
return redirect (url('some other url'));
}
请确保您在路由文件中定义了相同的 URI。
您也可以在您的 LoginController
中重定向用户。
但它只有在登录后才有效。当用户单击主页按钮或包含主页 url 的徽标时,此方法也会将用户重定向到所需的位置。
希望这个能帮到你。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。