2016-05-12 4 views
2

У меня очень простое приложение табло, в котором я отправляю электронное письмо пользователям со ссылкой. который выглядит так: http://localhost:8888/users/evqGeyCgo4tIG2C пока. здесь строка после /users/ - это уникальный вывод, который генерируется и отправляется пользователю по электронной почте.Войти в laravel используя pin

Таким образом, пользователь просто нажимает на ссылку, а в фоновом режиме я пытаюсь восстановить электронную почту и пароль пользователя и попытаться войти в систему. Но, к сожалению, я не могу использовать хешированный пароль, хранящийся в базе данных, для входа в систему.

Это мой код:

Способ 1:

$user = User::select('email','password')->where('pin',$pin)->first(); 

     if (Auth::login($user)) { 
      // Authentication passed... 
      return redirect()->intended('/user'); 
     } 

Способ 2:

$user = User::select('email','password')->where('pin',$pin)->first(); 

     if (Auth::attempt(['email' => $user->email, 'password' => $user->password])) { 
      // Authentication passed... 
      return redirect()->intended('/user'); 
     } 

К сожалению второй путь не удается, поскольку я не могу использовать хэш пароля. И первым способом я посмотрел его отсюда, но я не вижу перенаправления на триггер. отсюда: https://laravel.com/docs/4.2/security#manually

Я не возражаю против другого способа/способа, чтобы заставить пользователя loggedin с булавкой. И я не возражаю, если какой-либо один пользователь видит какой-то другой профиль пользователей.

Таким образом, вы можете подумать, что штырь передан в URL-адресе, который может использоваться другим пользователем для входа в систему. Но я не беспокоюсь об этом. Его просто оценки, которые пользователи видят в своей игре.

+0

то, что вы имеете в виду, не может использовать хешированную пароль? Также какая версия laravel как таковая ссылка указывает на 4.2, и мы до 5.2? и код перенаправления в порядке 2 выглядит как laravel 5 code not 4.2 ?? –

+0

Я, я использую laravel 5.2, и я хочу просто получить доступ к паролю пользователей, чтобы сделать его/ее loggedin. Поэтому, если я использую $ user-> password. Я получаю этот длинный хэшированный пароль, который привел бы к сбою в loggin-in –

ответ

2

Я думаю, что вам нужно, чтобы войти пользователей в их ID:

$user = User::select('id')->where('pin',$pin)->first(); 
Auth::loginUsingId($user->id); 
return redirect()->intended('/user'); 
+0

Хорошо, Спасибо, сработало. Но небольшое исправление с моей стороны. $ user = User :: select ('id') -> где ('pin', $ pin) -> first(); Примите ответ через некоторое время –

0

Вы очень близки, я хотел бы сделать что-то вроде этого

// based on the fact that you have a Request object 
$user = User::where('email', $request->input('email')) 
     ->where('password', \Hash::make($request->input('password'))) 
     ->where('pin', $request->input('pin')) 
     ->first(); 

if(! $user) { 
    // you do not have a user that was found, so return some error 
    return redirect()->back()->withInput()->withErrors('Invalid user'); 
} 

// since everything is good, just log the user in 
Auth::login($user); 

// redirect 
return redirect()->route('whatever'); 
+0

. Проблема здесь в том, что он использует ссылку только с идентификатором PIN-кода, без ввода формы? –

+0

пользователь не вводит ничего. но булавкой. который я использую для получения электронной почты и пароля. Наверное, ты не понял мой вопрос. Мне нужно войти в систему без ввода пароля и электронной почты. У меня есть булавка. –

+0

Итак, если вы просто используете булавку, вы можете просто задать вам запрос. – Laracademy

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