php - laravel5.4的api路由必须要给user表添加api_token字段?
PHP中文网
PHP中文网 2017-04-11 10:01:49
[PHP讨论组]

有大半年没用laravel了,最近用laravel5.4构建了新项目,发现路由里多了api.php这个文件。
默认的代码是

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

不知道auth:api是个什么东西,去看了一下。
才知道是配置了config/auth.php中的guardsapi项。而且这一项的默认配置的drivertoken
我想既然是默认配置,那肯定能用吧。
结果发现并不能。
网上找了好多资料才搞清楚逻辑,这种配置最终会在{project}/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php 里执行,而实现的逻辑是通过api_token参数去user表找对应的数据,如果没有,就会报错。
然后默认的数据表里并没有api_token这个字段。
既然是默认配置,应该拿来就可以上手才对。搞不懂为什么Laravel默认用token这种driver,却没有把user表结构给添加上api_token这个字段?难道还有别的实现方式?或者是我搞错了?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
阿神

没用过laravel,但感觉你理解错了,这个token应该是保存身份验证、状态的,不是存在表里的。我猜的。。说的不对别喷我。

http://www.tuicool.com/articl... http://blog.csdn.net/han_cui/...

阿神

api_token是一个加密字符串,在laravel中是可以设置这个api_token的时效的,不在user表中添加这个字段是因为这个字段是根据一定的条件动态加密出来的而不是固定不变的,这是一种安全机制

PHP中文网

auth:api必须要有api_token字段。没错。
不想的就自己扩展一个guard extension 出来

大家讲道理

api_token并不是和数据库中字段对应的,如果你想使用的话,可以在页面的header头中传值过来

如果不想使用系统自带的验证方法,也可以自定义验证方式。然后自己写中间件验证操作

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号