php - 为什么我的身份验证令牌没有出现在身份验证用户对象中,即使它返回了身份验证令牌?
问题描述
我正在使用 Laravel Passport 进行用户登录。
accessToken 不会出现的原因可能是什么dd(auth('web')->user());
?我需要的所有用户信息都出现在对象中,除了身份验证令牌。
之后dd($loginToken);
- 我看到了令牌,因此我们可以排除令牌不存在的可能性。
可能是因为我正在使用auth('web')->user()
,即使我的项目围绕使用api.php
而不是web.php
?如果我将它切换到auth('api')->user()
,我会收到一个 500 错误,这似乎是一种奇怪的行为。
我感谢任何反馈和/或改进建议:)
这是我的登录代码:
public function login(Request $request) {
$credentials = ['email' => $request->email, 'password' => $request->password];
if (Auth::guard('web')->attempt($credentials, false)) {
$loginToken = auth('web')->user()->createToken('MyApp')->accessToken;
dd(auth('web')->user());
return response()->json([
'message' => 'Successfully logged in',
'loginToken' => $loginToken
]);
}
return $this->sendError('Unauthorized.', ['error' => 'Unauthorized']);
}
这是我的auth.php
:
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
解决方案
因为当你 dd( user ) 你得到 users 表中的所有列时它不在表中,但是在 jwt 中你不必将令牌存储在数据库中你必须创建一个带有签名的代码......但是如果你想在数据库中保存令牌:创建表:jwt 令牌列:用户 id、令牌、created_at ....
我认为你可以得到“令牌”
dd(auth()->user()->token()) 或 dd(auth()->user()->accessToken)
推荐阅读
- r - 在R中定义序列的前导计数器
- javascript - 如何始终在屏幕底部显示浮动操作按钮
- file - 在用户输入时传递 ansible 同步模块文件权限属性
- python - x5t JWT 指纹 Python 转换
- c# - 在任务模式下使用该方法时,它会在线条图像中给出参数错误:gr.DrawImage (this.image, 0, 0, this.width, this.height);
- c - 定义一个全局常量
- javascript - 如何在使用 useEffect 正确更新哈希后重新渲染组件?
- docker - 如何使用 JCommandCentre 在远程服务器上显示 JFR 重新编码?
- python - 如何删除python中的所有unicode表示
- python - Django表格呈现空白行