关于获取登录用户的问题?
当添加middleware api.auth 或者在auth('web')->user()前调用$this->user() $this->auth等:auth('api')->user() auth('web')->user() 均能获取用户 且为相同用户
当不添加middleware api.auth或不进行上述调用时:auth('api')->user()可以获取用户 auth('web')->user()不能获取用户
个人认为调用API时应该能获取auth('api')->user()不能获取auth('web')->user()才是正确的情况
在查看源码寻找原因时发现:


此处Auth是Tymon\JWTAuth\Providers\Auth\Illuminate
嵌套调用发现先最终Auth是用的laravel的SessionGuard但是还没没找到覆写不同guard的登录用户代码
关于 LearnKu
@liyu001989
代码示例
加载鉴权中间件
middleware => api.auth情况不加载鉴权中间件
middleware => api.auth请求时无头部鉴权信息Authorization不加载鉴权中间件
middleware => api.auth请求时携带头部鉴权信息Authorization----------分割线------------
--------------分割线--------------
@liyu001989
明白你的意思了,给你点个赞先。
中间件调用 authenticate,最终使用了 sessionGuard setUser。
因为 auth 使用了配置中指定的
Tymon\JWTAuth\Providers\Auth\Illuminate,其中注入的是默认的是Illuminate\Contracts\Auth\Guard。可能修改这里会达到你的预期。不过为什么要纠结这里,你有什么特殊的业务逻辑吗