对不同用户Laravel的身份验证(尝试获取非对象的属性)

时间:2018-09-06 18:08:47

标签: laravel authentication middleware

在认证登录时出现另一个错误,因此我想为不同的用户提供不同的仪表板,因此示例user_type = 1它将重定向到user1 / dashboard,而user_type = 2它将重定向到user2 / dashboard,但是我遇到了这个错误

  

试图获取非对象身份验证的属性

这是我在laravel中的LoginController

if (Auth::attempt($credentials) && Auth::user()->user->user_type == 1) {
  // Authentication passed...
  return redirect('user1/dashboard');
  } else {
  Session::flash('login_error');
  return redirect('/login');
}

这是我的中间件,我使用User1Middleware和User2Middleware使其成为2个中间件

if (Auth::check() && Auth::user()->users->user_type == 1)
    {
        return $next($request);
    } else {
        return redirect('/login');
    }

因此,用户位于我的数据库中,而user_type是我的表名,如果这个问题很快就能解决,您能帮我高兴吗

从答案中我编辑了代码,但是仍然有错误,即使我有user_type = 2的逻辑,它也重定向到user1 / dashboard而不重定向到user2 / dashboard

$credentials = $request->only('email', 'password','user_type');
$credentials["is_verified"] = true;
if (Auth::attempt($credentials) && Auth::user()->user_type == 1) { 
   // Authentication passed... 
return redirect('user1/dashboard'); 
} else if( Auth::attempt($credentials) && Auth::user()->user_type == 2) { 
return redirect('user2/dashboard'); 
} else { 
Session::flash('login_error'); 
return redirect('/login'); 
}

2 个答案:

答案 0 :(得分:1)

您不必这样做:

Auth::user()->user

因为第一段代码:

Auth::user()

是用户。考虑到这一点,您可以将代码更改为如下所示:

if (Auth::attempt($credentials) && Auth::user()->user_type == 1) {
  // Authentication passed...
  return redirect('user1/dashboard');
  } else {
  Session::flash('login_error');
  return redirect('/login');
}

if (Auth::check() && Auth::user()->user_type == 1)
    {
        return $next($request);
    } else {
        return redirect('/login');
    }

你去哥们!

编辑:代码已添加到问题

您的else if仅检查用户是否具有类型,而不具有以下代码:

Auth::attempt($credentials)

答案 1 :(得分:0)

您好,在LoginController中添加或替换方法

protected function authenticated($request, $user)
    {
        if ($user->user_type == 1) {
            return redirect()->route('here you route name');
        }


        return redirect()->route('here you route name for second type of user');
    }