我正在建立一个系统,当用户第一次使用Facebook登录时,他无法提供密码。所以我尝试使用Facebook的凭据登录他。
Sentry::authenticate($credentials, false);
以上命令始终要求输入密码。如何在不向用户提供密码的情况下登录用户?
答案 0 :(得分:11)
在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);