laravel中的身份验证来自定义登录重定向

时间:2019-09-13 05:13:54

标签: php mysql laravel

我有一个身份验证登录页面,该页面登录并重定向到home.blade.php

我需要在此处检查用户表中的user_type是admin还是Normal。如果user_type =='admin'重定向到主页,否则重定向到home_user页面。

Route.php

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/home_user', 'HomeController@index')->name('home_user');

protected function redirectTo() {
        if (Auth::user()->user_type == 'admin')
            return '/home';
        else
            return '/home_user';
    }

4 个答案:

答案 0 :(得分:1)

根据注释中的定义,您也可以使用中间件,但这可能是棘手的方法。您可以在loginController中覆盖以下功能。

protected function authenticated(Request $request, $user)
{
if (Auth::user()->user_type == 'admin') {// do your magic here
    return redirect('/home');
}

 return redirect('/home_user');
}

有关参考,您可以访问here

答案 1 :(得分:0)

Below code, I have used for same. Try this.

 use Redirect;

 protected function authenticated($request, $user)
{
    if($user->is_admin == '1') {
        return Redirect::to('home');
    }elseif ($user->is_admin == '2') {
        Auth::logout();
        return Redirect::to('/admin/login');

    }else{
        return Redirect::to('studentDashboard');
    }

}

答案 2 :(得分:0)

您已经解决了问题,但是您的代码中有1个错误。 在laravel中,为了重定向,您需要返回redirect()-> to()或redirect()-> route()函数。您需要做的就是用以下代码替换代码:

protected function redirectTo() {
        if (auth()->user()->user_type == 'admin')
            return redirect()->route('home');
        else
            return redirect()->route('home_user');
}

答案 3 :(得分:0)

authenticated特征中覆盖现有的AuthenticatesUsers方法。

    /**
    * The user has been authenticated.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  mixed  $user
    * @return mixed
    */
    protected function authenticated(Request $request, $user)
    {
        if (Auth::user()->user_type == 'admin')
            return redirect('/home');
        else
            return redirect('/home_user');
    }

参考:authenticated方法