我正在使用Laravel Passport(auth:api
),一切运作良好但是我已经想到了在特定路线上记录用户请求的记录。
当向GET
发出/movie/65
请求时,我想在movie_view
中存储以下数据:user_id
,movie_id
(如果用户是登录)
但是在我的控制器中,如果没有设置$request->user()
中间件,我将无法拨打auth:api
。
您建议达到此目的的最佳做法是什么?
答案 0 :(得分:2)
默认身份验证类型应设置为config/auth.php
资料来源:https://laracasts.com/discuss/channels/general-discussion/optional-authentication-for-api?page=0(很难找到)
答案 1 :(得分:0)
做到这一点的最佳方法是:
if (\Auth::guard('api')->check()) {
$user = \Auth::guard('api')->user();
}
您必须将防护设置为“ api”,默认值是“ web”。
答案 2 :(得分:0)
您可以按照此处的建议创建自定义中间件-https://laracasts.com/discuss/channels/laravel/how-to-handle-route-with-optional-authentication。然后对其应用api
保护。假设您在auth.optional
中将自定义中间件分配为Kernel.php
,然后可以将该中间件用作auth.optional:api
(带有api
保护)。然后,在上述情况下,您可以通过$request->user()
访问用户。