Laravel Jetstream自定义认证时如何向__invoke方法传递Request参数
你不需要手动给authenticateUsing方法额外传递Request参数,Fortify调用你传入的可调用类时,会自动将当前请求实例作为第一个参数注入到__invoke方法中,按以下步骤修改即可:
- 保持你注册自定义认证逻辑的代码不变,不需要额外传参:
use App\Actions\AuthenticateLoginAttempt; use Laravel\Fortify\Fortify; Fortify::authenticateUsing([new AuthenticateLoginAttempt, '__invoke']);
- 直接修改
AuthenticateLoginAttempt类的__invoke方法,声明接收Request参数即可直接使用:
<?php namespace App\Actions; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Facades\Hash; class AuthenticateLoginAttempt { public function __invoke(Request $request) { // 示例认证逻辑,可按自己需求修改 $user = User::where('email', $request->input('email'))->first(); if (! $user || ! Hash::check($request->input('password'), $user->password)) { // 认证失败返回null return null; } // 认证成功返回用户实例 return $user; } }
如果你的自定义认证逻辑需要其他依赖,也可以直接在__invoke方法的参数列表中声明,Laravel服务容器会自动完成依赖注入。
内容的提问来源于stack exchange,提问作者user3233787
相关产品推荐
相关产品推荐

