认证守卫
方法
以下方法可用于认证守卫实例。
多个守卫
如果最新创建的 api
守卫没有设置默认的守卫或定义了多个守卫认证,你应该指定守卫时调用 auth()
。
$token = auth('api')->attempt($credentials);
attempt()
通过一些凭证试图认证用户。
// 如果凭证有效,则为用户生成 token
$token = auth()->attempt($credentials);
这将返回一个 jwt 或 null
login
登录一个用户并为他们返回一个 jwt。
// 从某处获取一些用户
$user = User::first();
// 获取 token
$token = auth()->login($user);
user()
获取当前认证的用户。
// 获取当前认证的用户
$user = auth()->user();
如果用户没有认证,则会返回 null
。
userOrFail()
获取当前已认证用户或抛出一个异常。
try {
$user = auth()->userOrFail();
} catch (\Tymon\JWTAuth\Exceptions\UserNotDefinedException $e) {
// 做点什么
}
如果没有设置用户,将抛出 Tymon\JWTAuth\Exceptions\UserNotDefinedException
logout()
注销用户 — 这将使当前 token 失效并取消设置已认证用户。
auth()->logout();
// 传 true 以强制 token “永远”列入黑名单
auth()->logout(true);
refresh()
刷新 token,使当前 token 失效
$newToken = auth()->refresh();
// 第一个参数传 true 以强制 token “永远”列入黑名单。
// 第二个参数将重置新 token 申请
$newToken = auth()->refresh(true, true);
invalidate()
token 失效(添加到黑名单)
auth()->invalidate();
// 第一个参数传 true 以强制 token “永远”列入黑名单。
auth()->invalidate(true);
tokenById()
根据给定用户的 id 获取 token
$token = auth()->tokenById(123);
payload()
获取原始 JWT 负载
$payload = auth()->payload();
// 您可以直接访问声明,例如:
$payload->get('sub'); // = 123
$payload['jti']; // = 'asfe4fq434asdf'
$payload('exp') // = 123456
$payload->toArray(); // = ['sub' => 123, 'exp' => 123456, 'jti' => 'asfe4fq434asdf'] 等
validate()
验证用户的凭证
if (auth()->validate($credentials)) {
// 凭证有效
}
更高级的用法
添加自定义声明
$token = auth()->claims(['foo' => 'bar'])->attempt($credentials);
显式设置 token
$user = auth()->setToken('eyJhb...')->user();
显式设置请求实例
$user = auth()->setRequest($request)->user();
覆盖 token ttl
$token = auth()->setTTL(7200)->attempt($credentials);