You need to enable JavaScript to run this app. Laravel Jetstream自定义认证时如何向__invoke方法传递Request参数
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Jetstream自定义认证时如何向__invoke方法传递Request参数

你不需要手动给authenticateUsing方法额外传递Request参数,Fortify调用你传入的可调用类时,会自动将当前请求实例作为第一个参数注入到__invoke方法中,按以下步骤修改即可:

  1. 保持你注册自定义认证逻辑的代码不变,不需要额外传参:
use App\Actions\AuthenticateLoginAttempt;
use Laravel\Fortify\Fortify;

Fortify::authenticateUsing([new AuthenticateLoginAttempt, '__invoke']);
  1. 直接修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 09:06:07