管理员登录后,Laravel 5.2重定向管理页面

时间:2016-01-27 21:35:07

标签: laravel

Laravel 5.2已经出现一段时间了。是的,它有新的auth功能非常好。特别适合初学者。 我的问题, 如何检查用户是否为admin,然后安全地重定向到admin / dashboard?我知道一种方法是在数据库中使用admin标志,但是你们中的任何人都可以展示一些例子吗?

4 个答案:

答案 0 :(得分:9)

转到AuthController.php并添加此方法

其中role是数据库中定义的用户角色。

protected function authenticated($request,$user){
    if($user->role === 'admin'){
        return redirect()->intended('admin'); //redirect to admin panel
    }

    return redirect()->intended('/'); //redirect to standard user homepage
}

答案 1 :(得分:1)

AuthController扩展了AuthenticatesAndRegistersUsers特征,该特征具有名为redirectPath的公共方法。在我的情况下,我会在AuthController上扩展该方法,并将我的逻辑放在那里:

public function redirectPath()
{
    if (Auth::user->myMethodToCheckIfUserHasAnAdminRoleLikeAnEmailOrSomethingLikeThat()) {
        redirect('admin/dashboard');
    }

    redirect('home');
}

答案 2 :(得分:1)

与Laravel 5.3 / 5.4中一样

将以下行添加到create_users_table迁移。

$table->boolean('is_admin');

将以下方法添加到LoginController。

protected function authenticated(Request $request, $user)
{
    if ( $user->is_admin ) {
        return redirect('/admin/home');
    }

    return redirect('/home');
}

附加说明不要忘记将以下行添加到RedirectIfAuthenticated中间件:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        // the following 3 lines
        if (Auth::user()->is_admin) { 
            return redirect('/admin/home');
        }

        return redirect('/home');
    }

    return $next($request);
}

否则,如果你是输入yourdomain / login并以管理员身份登录,它将被重定向到home而不是admin / home。

答案 3 :(得分:0)

Auth / LoginController 中的

protected $redirectTo = '/home'; 例如,将'/ home'更改为'/ loginin',并创建一个新的控制器,并在控制器中获取用户的信息,并检查他是否是管理员或不,然后将他重定向到正确的页面