php - laravel 护照拒绝生成的访问令牌
问题描述
我按照以下步骤操作:
- 安装护照包作为它的文件
- 使用 db:seed 创建了一个用户(我很惊讶地看到 api_token 列不存在错误。总的来说,我手动添加了此列)
- 使用 db:seed 创建了一个用户(我不知道 api_token 的用途,但我随机填充了它)
- 通过http://localhost:8000/oauth/token通过密码凭证成功生成访问令牌
问题是在使用生成的令牌时我总是得到
{"message":"Unauthenticated."}
生成的令牌样本:
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImNhNjdlNTA5MDI0M2FhZjMwNDViZGQ1OTc5MDI3YTc4ODA4MWFiMTA4NDk5OThmZTE0NmJhYmRiZmNkYzRlN2MxNjcyZDdhZjdmNTU4Y2Y4In0.eyJhdWQiOiIyIiwianRpIjoiY2E2N2U1MDkwMjQzYWFmMzA0NWJkZDU5NzkwMjdhNzg4MDgxYWIxMDg0OTk5OGZlMTQ2YmFiZGJmY2RjNGU3YzE2NzJkN2FmN2Y1NThjZjgiLCJpYXQiOjE1NDEyNjE5MTYsIm5iZiI6MTU0MTI2MTkxNiwiZXhwIjoxNTcyNzk3OTE2LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.JuTqO1W9gSLq1gA0ku8snsfaZXvX08Rjr_KbFtLzNOgP1mpzLbkOT7QzwdBVwOU4Fq6qUaZYP7bTKVPOSr9D8kBJLHEvN83vG-7JnSK87128bVVL1SCI31-ZsyG53LU0py2HOsycgZup7X3NXweDQ9YFNDZneuWASNhb5j06didSZ_p4C1eON3ptjnay1H2zjYHZoQ2prFQgi-ZQpXxt3c_4WhciDb-Yb8a8VBdub1mvj5gMF8kkrTN9cLlIpTFDsxGJTAkD0wYCX0W_I6Aggjc5YSEK_ovYJ5b4Ag2B8chrKqLXvRbplYkMCypsNxyR-OMJe0VCOISvutUdvU0UU7JvbyEoE45uFzV6wAqDMXQF0G10Sd1QB5fSzWHjj2pBonjnYGrEOynXpt8AGmU-Ip53rHAC3k7Tif0CE5QQ-kFJ01b-BW-MQp2MFwRRHZTOkXSnsfGocZBaryTHfgdGMPS7hcxJDh-l7h1g6wq6ywNIevI-XiUaC_XjrSUn-uUe4J1XtK1S6wM58OeprLtfbsleYOoYH2nnmZ6eXpCaeS3ENVTnT5t3sJV_TgUfR8hOuPlCB8uqFNE9atBGgP2fiNcgNkyu5uG0AXM3_drvgsSumyvJYXLRMfkHeaAA3HTWKzUck-yhxuSqNpTZPMt-Ml1FzNx4ABUQDB7WrXG3Rd0",
"refresh_token": "def50200e277884b2343dc16700e2ccd4b6f46ae31131fc6dc4ef643204d74696dceafa430647d89732cf1a06c944f04583510afd1f53aa84cfacdc7fb81843ec163802922171451e0d2511788b7ee71d6e341ae07977c45f44373d9db2c65b81618dd7e0fe066a3f76c4339b6308a4561c23eb31b1fd291fbf91e379c98ca1ee0f7c689eac1aac2ea0b4a5468f954ea82d2aa5d505b38d92ccb9663b0ecefb3702903738bb843b1d8cd12a9feeefcb3705713cb7b699de02c4dafa32616caf9e32a965a30224a806d8b6cb776f81da0961ce1e2cd8348e7e2b8ffd42b0ba9fd9f9e1f34b6160f4ed1e41d778a8207e17ca512aee2368a43ec3bcc7b5897d2774fd94b3ff5e7ce2cc0ce386f42e4a43d4d49a126d629bc90aa72e087f67183509b739008ce73839801a58ff76f1c7d310e9ba79c52ec4758bdcfaa53e15ed286528ee27ac0e9e8498776920b8d1cd5d6aff4029b9fc19a02c8b71badd960f190a8"
}
我的包版本:
"php": "^7.1.3",
"barryvdh/laravel-cors": "^0.11.2",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.7.*",
"laravel/passport": "^7.0",
"laravel/tinker": "^1.0",
"spatie/laravel-permission": "^2.23"
中间件守卫:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
有什么我想念的吗?
更新 :
我注意到当我将每个随机字符串放在用户表的 api_token 列中时,我可以通过 Bearer Token 传递来轻松地验证用户
问题: 所以在通过以下方式验证用户身份后:
Auth::attempt($credentials)
框架应该自动填充token_api还是我应该手动填充?
解决方案
它变成了laravel缓存问题:
- laravel/passport 不需要 token_api 列
- 只需运行
php artisan config:cache
以重置缓存
推荐阅读
- responsive-design - Responsive semantic ui grid with form not working
- python - Calling variable from external file multiple times in python
- android - Android:右侧汉堡图标,左侧导航视图?
- r - 使用带有 Rcpp 数据结构的 std::move 有什么好处或坏处吗?
- r - R错误中的Boxcox()转换
- java - 当我在 Spring 中添加依赖项(使用 Maven)时实际发生了什么?
- php - 合并儿童分类 Laravel 的帖子
- oracle - 使用 Hibernate 和 Oracle 仅选择那些与参考表中所有给定条件匹配的记录
- node.js - Agenda/Cron 在周一和周二每 2 周重复一次
- sql - 如果相应部门处于非活动状态,将更新员工的“活动”字段的更新语句