Php 拉雷维尔重新认证
我有一个问题,当用户使用Laravel6中的中间件按角色登录到仪表板时,我试图重定向用户。但是我很沮丧,我不知道在这种情况下问题出在哪里。请帮忙,谢谢 每个角色都有此路径web.phpPhp 拉雷维尔重新认证,php,laravel,laravel-6,Php,Laravel,Laravel 6,我有一个问题,当用户使用Laravel6中的中间件按角色登录到仪表板时,我试图重定向用户。但是我很沮丧,我不知道在这种情况下问题出在哪里。请帮忙,谢谢 每个角色都有此路径web.php Route::group([ 'as'=>'user.', 'prefix'=>'user', 'namespace'=>'User', 'middleware'=>['auth','user']], function(){ Route::get('dashboar
Route::group([ 'as'=>'user.', 'prefix'=>'user', 'namespace'=>'User', 'middleware'=>['auth','user']],
function(){
Route::get('dashboard', 'DashboardController@index')->name('dashboard');
});
中间件看起来像
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->role->id == 3 ) {
return $next($request);
}else{
return redirect()->route('login');
}
}
重定向验证
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check() && Auth::user()->role->id == 1 ) {
return redirect()->route('admin.dashboard');
}elseif (Auth::guard($guard)->check() && Auth::user()->role->id == 2) {
return redirect()->route('author.dashboard');
}elseif (Auth::guard($guard)->check() && Auth::user()->role->id == 3) {
return redirect()->route('user.dashboard');
}else{
return $next($request);
}
和LoginController
public function __construct()
{
if (Auth::check() && Auth::user()->role->id == 1 ) {
$this->redirectTo = route('admin.dashboard');
}elseif (Auth::check() && Auth::user()->role->id == 2 ) {
$this->redirectTo = route('author.dashboard');
}elseif (Auth::check() && Auth::user()->role->id == 3 ) {
$this->redirectTo = route('user.dashboard');
} else {
$this->middleware('guest')->except('logout');
}
}
您的第一个中间件检查用户是否已登录,以及他是否具有角色3 可能会将其更改为:
public function handle($request, Closure $next)
{
if (Auth::check()) {
return $next($request);
}else{
return redirect()->route('login');
}
}
它工作正常,我猜问题将出现在RedirectIfAuthenticated或LoginController中的某个地方..在构造函数中这样做不会有任何作用。。。会话尚未启动,因此
Auth::check
将始终返回false
。。。guest
中间件就是这个地方,你能帮我修一下吗?