Laravel 5.4 Passport 记录用户操作(可选 auth:api)

Laravel 5.4 Passport Log user action (Optional auth:api)

我正在使用 Laravel Passport (auth:api),一切正常,但我想到了在特定路线上记录用户请求的想法。

当向 /movie/65 发出 GET 请求时,我想在 movie_view 中存储以下数据:user_idmovie_id(如果用户已登录)

但是在我的控制器中,如果不设置 auth:api 中间件,我无法调用 $request->user()

您建议实现此目标的最佳做法是什么?

config/auth.php

中应将默认身份验证类型设置为 'api'

来源:https://laracasts.com/discuss/channels/general-discussion/optional-authentication-for-api?page=0(很难找到)

最好的方法是:

if (\Auth::guard('api')->check()) {
    $user = \Auth::guard('api')->user();
}

您必须将守卫设置为 'api',默认设置为 'web'。

您可以按照此处的建议创建自定义中间件 -- https://laracasts.com/discuss/channels/laravel/how-to-handle-route-with-optional-authentication。然后对其应用 api 守卫。假设您将自定义中间件分配为 Kernel.php 中的 auth.optional,那么您可以将该中间件用作 auth.optional:api(使用 api 守卫)。然后,您可以在上述情况下通过 $request->user() 访问用户。