在认证登录时出现另一个错误,因此我想为不同的用户提供不同的仪表板,因此示例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');
}
答案 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');
}