Sentry on Laravel 4. Социальная аутентификация без пароля
Я создаю систему, в которой, когда пользователь впервые входит в систему с помощью Facebook, он не может предоставить пароль. Поэтому я пытаюсь войти в него, используя учетные данные из Facebook.
Sentry::authenticate($credentials, false);
Приведенная выше команда всегда должна запрашивать пароль. Как войти в систему пользователя без необходимости запрашивать пароль?
1 ответ
В Sentry вы можете войти в систему двумя разными способами:
1) Когда вы вводите пароль в форму входа, вы указываете Sentry найти пользователя и проверять пароль для аутентификации и входа в него / нее одновременно:
// Set login credentials
$credentials = array(
'email' => Input::get('email'),
'password' => Input::get('password'),
);
// Try to authenticate the user
$user = Sentry::authenticate($credentials, false);
2) Когда пользователь проходит проверку подлинности с помощью других средств, таких как OAuth, и вам просто нужно заставить его войти в систему:
// Find the user using the user id or e-mail
$user = Sentry::findUserById($userId);
// or
$user = Sentry::findUserByLogin($email);
// and
// Log the user in
Sentry::login($user, false);
Вы выбираете тот или иной, вам не нужно использовать оба.
3) В качестве третьего примера предположим, что у вас есть старая пользовательская база данных, и ваши пароли хешируются с использованием MD5:
// Find the user
$user = Sentry::findUserByLogin($email);
// Check the password
if ($user->password !== md5(Input::get('password'))
{
Redirect::back()->withMessage('Password is not correct.');
}
// And, if password is correct, force the login:
Sentry::login($user, false);