2015-07-14 6 views
3

Я пытаюсь проверить подлинность пользователя, но ничего не происходит в контроллереаутентифицировать пользователя Instance не работает Laravel 5.0

я следующий

$authUser = User::where('password', md5($user->salt . $request->get('password'))) 
        ->where('email', $request->get('email')) 
        ->first(['login', 'email', 'firstname', 'lastname', 'zip_code','phone']); 
if ($authUser) { 
    Auth::login($authUser); 
    return response()->json(['user' => $authUser]); 
} 

ответ возвращает меня пользователя, но для следующего запроса я получаю ошибку, что пользователь не аутентифицирован. Есть идеи?

+0

Пожалуйста, напишите более подробные вопросы – tarzanbappa

+0

Но почему вы не непосредственно с помощью аутентификации :: попытку? –

+0

Потому что в auth :: попытка. Если пользователь найден, хешированный пароль, хранящийся в базе данных, будет сравниваться с хэшированным паролем, переданным методу через массив. В базе данных используется хеширование md5 с пользовательской солью произвольной генерации, а Laravel использует другую функцию для хеширования –

ответ

3

Здравствуйте, это происходит потому, что вы забыли добавить поле идентификатора в массив возвращаемых полей, поэтому попробуйте добавить его как

$authUser = User::where('password', md5($user->salt . $request->get('password'))) 
        ->where('email', $request->get('email')) 
        ->first(['id', 'login', 'email', 'firstname', 'lastname', 'zip_code','phone']); 
if ($authUser) { 
    Auth::login($authUser); 
    return response()->json(['user' => $authUser]); 
} 
+0

Большое спасибо, он работает –

Смежные вопросы