[不花钱站长]:从免费域名开始[0元] Oracle永久免费VPS[0元] VPS环境搭建免费脚本[0元] 秒变大盘挂载免费网盘[0元] 小白免费采集器1天500W[0元] CF免费DNS+CDN服务[0元]
[零基础网赚]:撸本站免费源码[0元] 网站强引免费蜘蛛法[0元] 图片视频文件免费存储[0元] 外链轻松发布免费友链[0元] 入坑免费教程学习源代码[0元] 网上百种+赚钱联盟推荐[?元]

↑↑VPS推荐网 WWW.VPS.COM.IN 稳定 便宜 免备案↑↑


您现在的位置是:首页 > 全球[VPS测评] >  永久免费VPS 香港VPS,国外永久免费VPS

Laravel Passport 提示→Method attempt does not exist.的解决方法

全球[VPS测评]来源:VPS推荐网点击:854
【性价之王】【线路之王】【价格之王】【配置之王】
【免费之王】【香港首推】【梯子之王】【独服之王】
Laravel Passport 提示→Method attempt does not exist.的解决方法

最近一直在学习 Laravel 的 API 开发,结果一开始就难住了,按照 learnku 上“使用 Laravel Passport 处理 API 认证”敲代码,post 创建用户正常,但是 post 登录就一直报错。

最开始报错:“401:Unauthorized”,经过查看是因为 login 方法中问题:

if(!Auth::attempt($credentials))     return response()->json([         'message' => 'Unauthorized'     ], 401); $user = $request->user();

上述代码中 Auth::attemt 一直返回 false,检查了一下觉得可能是因为一直走默认的 web guard 导致的,而我是做 API 的。

然而 config/auth.php 中已经按照教程填写了 api guard,代码如下:

'defaults' => [     'guard' => 'web',     'passwords' => 'users', ], 'guards' => [     'web' => [         'driver' => 'session',         'provider' => 'users',     ],     'api' => [         'driver' => 'passport',         'provider' => 'users',         //'hash' => false,     ], ],

因为是新手,也不太懂流程,就想着是不是还是走的 defaults 呢?就将开始的代码改了一下,显示指定 auth 采用 api guard:

if(!Auth::guard('api')->attempt($credentials))

结果就报了标题中的:Method attempt does not exist.错误。

找了半天终于在 https://github.com/laravel/framework/issues/21194 中找到了问题真相,Passport 并未实现 attempt,所以当然报错了啊。

解决办法就是不通过 auth 验证登录,而是自行验证,具体代码如下:

        $user = User::where('email', $request->email)->firstOrFail(); if(!Hash::check($request->password, $user->password)) {     return response()->json([         'message' => '用户名或密码错误!'     ], 401); }

到此问题解决,再次 post 登录,成功获取 access_token。



猜你可能想看的VPS


转载请注明原文地址:http://140.238.13.167:12355/read-201689.html

下一篇       上一篇