用户身份验证后我无法重定向。我想将admin重定向到管理面板,将用户重定向到家,所以我制作了管理中间件:
public function handle($request, Closure $next)
{
if (Auth::user() && Auth::user()->isAdmin()) {
return $next($request);
}
return redirect('/');
}
管理面板的路由是:
Route::prefix('admin')->middleware(['web', 'admin', 'auth'])->group(function () {
Route::get('/', 'HomeController@index');
Route::resource('user', 'Admin\UserController');
});
我有M {2-M关系中的User
和Role
模型。
用户模型:
public function role(){
return $this->belongsToMany('App\Role');
}
public function isAdmin()
{
return ($this->role->first()->name == 'Admin') ? true : false;
}
验证LoginController
:
protected $redirectTo = '/admin';
验证RedirectIfAuthenticated
:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/');
}
return $next($request);
}
我遇到的问题是我总是在主页上。通过检查员观察我发现了一些奇怪的东西,不知道它是否是标准程序:
登录似乎被触发了两次?路由到/admin
被触发并获得200 OK状态,但我从未见过它。但是,如果我手动将其输入浏览器,它将引导我进入管理仪表板。