关于认证中间件指定配置为 API 而非 Web 的问题?

你好,我发现你所使用的是api->group(['middleware' => 'api.auth'])这个中间件,他总是会默认调用web的配置,由于需求问题我想指定使用api的参数配置,请问如何指定呢?另外问一下api.auth这个对应dingo的中间件与auth携带参数:api应该用哪个?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

这问题我也遇到了,我觉得是 dingo 在 api.auth 这个中间件上做的还是有问题,不能方便的指定guard。感觉这里由历史版本的原因。
我的解决办法是在 api.auth 这个中间件生效之前重新绑定用于认证的 guard,你可以重新写一个中间件,但是要调用在 api.auth 这个中间件之前,然后执行以下代码:

app()->instance(\Illuminate\Contracts\Auth\Guard::class, auth('api'));

这是我觉得比较方便的方法了,至于为什么要这么做,哎,debug 了半天,说来话长,泪汪汪。

6年前 评论
讨论数量: 3

这问题我也遇到了,我觉得是 dingo 在 api.auth 这个中间件上做的还是有问题,不能方便的指定guard。感觉这里由历史版本的原因。
我的解决办法是在 api.auth 这个中间件生效之前重新绑定用于认证的 guard,你可以重新写一个中间件,但是要调用在 api.auth 这个中间件之前,然后执行以下代码:

app()->instance(\Illuminate\Contracts\Auth\Guard::class, auth('api'));

这是我觉得比较方便的方法了,至于为什么要这么做,哎,debug 了半天,说来话长,泪汪汪。

6年前 评论
liyu001989

『总是会默认调用web的配置』 是什么意思,什么配置? 应该用 api.auth

6年前 评论

这问题我也遇到了,我觉得是 dingo 在 api.auth 这个中间件上做的还是有问题,不能方便的指定guard。感觉这里由历史版本的原因。
我的解决办法是在 api.auth 这个中间件生效之前重新绑定用于认证的 guard,你可以重新写一个中间件,但是要调用在 api.auth 这个中间件之前,然后执行以下代码:

app()->instance(\Illuminate\Contracts\Auth\Guard::class, auth('api'));

这是我觉得比较方便的方法了,至于为什么要这么做,哎,debug 了半天,说来话长,泪汪汪。

6年前 评论

@Jeffrey 太感谢了···我也遇到这个问题了(为了支持多表认证)

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!