You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel登录API接口出现419错误(代理重新认证要求)如何解决?

Laravel登录API出现419状态码的解决方法

我在Laravel中开发了登录API,但出现了419错误。以下是相关代码:

登录方法代码

public function login(Request $request)
{
    try{
        $rules = [
            'phone' => 'required',
            'password' => 'required'
        ];

        $validator = Validator::make($request->all(), $rules);
        if ($validator->fails()) {
          return response()->json(['status' => false, 'data' => [], 'error' => $validator->errors()]);
        }

        $credentials = request(['phone', 'password']);

        if (! $token = auth()->attempt($credentials)) {
          return response()->json(['status' => false, 'data' => [], 'error' => ["message" => "Email / password didn't match."]]);
        }

        if(auth()->user()->email_verified == 'No')
        {
          auth()->logout();
          return response()->json(['status' => false, 'data' => [], 'error' => ["message" => 'Your Email is not Verified!']]);
        }

        if(auth()->user()->ban == 1)
        {
          auth()->logout();
          return response()->json(['status' => false, 'data' => [], 'error' => ["message" => 'Your Account Has Been Banned.']]);
        }

        return response()->json(['status' => true, 'data' => ['token' => $token, 'user' => new UserResource(auth()->user())], 'error' => []]);
    }
    catch(\Exception $e){
        return response()->json(['status' => true, 'data' => [], 'error' => ['message' => $e->getMessage()]]);
    }
}

表单代码

<form class="mloginform" action="{{ route('user.login.submit') }}" method="POST">
      {{ csrf_field() }}
<div class="form-input">

路由配置

Route::post('login', 'Api\Auth\AuthController@login');

解决方法

1. 确认CSRF Token传递正确

  • 检查页面源码,确认{{ csrf_field() }}是否渲染出了<input type="hidden" name="_token" value="XXX">字段,确保表单提交时该字段被一同发送。
  • 如果是通过AJAX调用接口,需要在请求头中携带X-CSRF-TOKEN:
    1. 在页面头部添加meta标签:<meta name="csrf-token" content="{{ csrf_token() }}">
    2. 在AJAX请求中设置请求头:
      headers: {
        'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
      }
      

2. 调整路由的中间件配置

  • Laravel的api中间件组默认跳过CSRF验证,可将登录路由归入该组:
    Route::middleware('api')->post('login', 'Api\Auth\AuthController@login');
    
  • 或者在app/Http/Middleware/VerifyCsrfToken.php的$except数组中添加该路由,直接排除CSRF验证:
    protected $except = [
        '/login',
    ];
    

3. 检查会话与配置有效性

  • 确认.env文件中的SESSION_DOMAIN和APP_URL配置与当前域名匹配,跨域场景下域名不匹配会导致会话失效触发419错误。
  • 执行以下命令清除缓存,确保配置生效:
    php artisan config:clear
    php artisan cache:clear
    

4. 验证路由匹配正确性

  • 执行php artisan route:list查看路由列表,确认user.login.submit对应的路由路径、请求方式与定义的登录接口完全一致,避免因路由不匹配导致的异常。

内容的提问来源于stack exchange,提问作者user22865134

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:55:30