php - 如何在 laravel 中撤销多重身份验证中的令牌?
问题描述
我写了一个登录方法,它奏效了。我的身份验证配置:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'admin-web' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'passport',
'provider' => 'admins',
],
],
我写了一个注销方法,例如:
public function logout(Request $request)
{
Auth::guard('admin-web')->logout();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user()->tokens->find($id);
}
但它无法在此列中找到标记:
$token = $request->user()->tokens->find($id);
并引发错误:
Trying to get property 'tokens' of non-object
解决方案
像下面这样使用并检查它你错过了 $id 参数。
public function logout(Request $request,$id)
{
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user('admin-web')->tokens->find($id);
\Auth::guard('admin-web')->logout();
}
推荐阅读
- javascript - Javascript 未使用 window.open 事件打开“chrome://newtab”
- javascript - 鼠标移出时取消边框
- qt - 如何在 QDoubleSpinBox 中实现鼠标按钮单击事件
- android - 我需要 Picasso 从没有 URL 地址的服务器的私人文件夹中加载图像,如何?
- html - Django:当用户加入带有 ManyToMany 字段的事件时更改 HTML 按钮
- python - 即使使用 dll 也无法识别 Glut 方法(Pyopengl3/Python3.8/Windows10-64)
- python - 为什么结果不一致?
- javascript - 如何显示带有链接的资源标题?
- python - Python:使用 RFC 3164 发送具有优先级值的系统日志消息
- flutter - 你好。我对扑腾很陌生。颤振演示错误