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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

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

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

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

5年前 评论
讨论数量: 3

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

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

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

5年前 评论
liyu001989

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

5年前 评论

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

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

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

5年前 评论

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

5年前 评论

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