会话验证器
会话身份验证器将用户的身份验证存储在用户的会话中,以及在他们设备上的安全 cookie 中。这是大多数网站中使用的基于密码的标准登录。它支持安全的记住我功能,以及更多功能。它还可以用于处理单页应用程序 (SPA) 的身份验证。
方法参考
attempt()
当用户尝试使用其电子邮件和密码登录时,您将调用身份验证类上的 attempt()
方法,并传入其凭证。
$credentials = [
'email' => $this->request->getPost('email'),
'password' => $this->request->getPost('password')
];
$loginAttempt = auth()->attempt($credentials);
if (! $loginAttempt->isOK()) {
return redirect()->back()->with('error', $loginAttempt->reason());
}
在成功 attempt()
后,用户登录。返回的响应对象将提供作为 extraInfo()
登录的用户。
$result = auth()->attempt($credentials);
if ($result->isOK()) {
$user = $result->extraInfo();
}
如果尝试失败,则会触发 failedLogin
事件,其中凭证数组作为唯一参数。无论是否通过,登录尝试都会记录在 auth_logins
表中。
如果 Auth
配置文件中的 allowRemembering
为 true
,则可以告诉会话身份验证器设置一个安全的记住我 cookie。
$loginAttempt = auth()->remember()->attempt($credentials);
check()
如果您想检查用户的凭证而不登录,则可以使用 check()
方法。
$credentials = [
'email' => $this->request->getPost('email'),
'password' => $this->request->getPost('password')
];
$validCreds = auth()->check($credentials);
if (! $validCreds->isOK()) {
return redirect()->back()->with('error', $validCreds->reason());
}
返回的结果实例包含有效的用户作为 extraInfo()
。
loggedIn()
您可以使用恰如其名的方法 loggedIn()
确定用户当前是否已登录。
if (auth()->loggedIn()) {
// Do something.
}
logout()
您可以调用 logout()
方法使用户退出当前会话。这将销毁并重新生成当前会话,清除此用户当前的任何记住我令牌,并触发 logout
事件。
auth()->logout();
forget()
forget
方法将清除当前用户的全部记住我令牌,使其在下次访问网站时不会被记住。
事件和日志记录
以下是会话身份验证器的事件和日志记录列表。
注册
- 默认注册
- 发布电子邮件/用户名/密码
- 确定 → 事件
register
和login
- 否定 → 无事件
- 确定 → 事件
- 发布电子邮件/用户名/密码
- 使用电子邮件激活注册
- 发布电子邮件/用户名/密码
- 确定 → 事件
register
- 否定 → 无事件
- 确定 → 事件
- 发布令牌
- 确定 → 事件
login
- 否定 → 无事件
- 确定 → 事件
- 发布电子邮件/用户名/密码
登录
- 默认登录
- 发布电子邮件/密码
- 确定 → 事件
login
/ 表格auth_logins
- 否定 → 事件
failedLogin
/ 表格auth_logins
- 确定 → 事件
- 发布电子邮件/密码
- 电子邮件 2FA 登录
- 发布电子邮件/密码
- 确定 → 无事件 / 表格
auth_logins
- 否定 → 事件
failedLogin
/ 表格auth_logins
- 确定 → 无事件 / 表格
- 发布令牌
- 确定 → 事件
login
- 否定 → 无事件
- 确定 → 事件
- 发布电子邮件/密码
- 记住我
- 发送不带会话 Cookie 的记住我 Cookie
- 确定 → 无事件
- 否定 → 无事件
- 发送不带会话 Cookie 的记住我 Cookie
- 魔术链接
- 发布电子邮件
- 确定 → 无事件
- 否定 → 无事件
- 发送带有令牌的请求
- 确定 → 事件
login
和magicLogin
/ 表格auth_logins
- 否定 → 事件
failedLogin
/ 表格auth_logins
- 确定 → 事件
- 发布电子邮件