有大半年没用laravel了,最近用laravel5.4构建了新项目,发现路由里多了api.php这个文件。
默认的代码是
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
不知道auth:api
是个什么东西,去看了一下。
才知道是配置了config/auth.php
中的guards
的api
项。而且这一项的默认配置的driver
是token
。
我想既然是默认配置,那肯定能用吧。
结果发现并不能。
网上找了好多资料才搞清楚逻辑,这种配置最终会在{project}/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php
里执行,而实现的逻辑是通过api_token
参数去user表找对应的数据,如果没有,就会报错。
然后默认的数据表里并没有api_token
这个字段。
既然是默认配置,应该拿来就可以上手才对。搞不懂为什么Laravel默认用token
这种driver
,却没有把user表结构给添加上api_token
这个字段?难道还有别的实现方式?或者是我搞错了?
用
auth:api
必须要有api_token
字段。没错。不想的就自己扩展一个guard extension 出来