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

Laravel非默认Guard验证凭证报错:TokenGuard无attempt方法

问题

项目中配置了两个Guard:

  • 第一个是"web",关联admins表,使用session驱动
  • 第二个是"mobile",关联users表,使用token驱动

配置信息如下:

'defaults' => [
    'guard' => 'web',
    'passwords' => 'admins',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
    'mobile' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

注:使用的是Sanctum认证系统。

尝试使用第二个Guard进行登录验证时,执行凭证校验出现错误,登录代码如下:

public function login(Request $request)
{
   .............

     if(!Auth::guard('mobile')->attempt($request->only(['email', 'password']))){
        return response()->json([
           'status' => false,
           'message' => 'Email & Password does not match with our record.',
       ], 401);
     }
        
   .............

}

报错信息:

"Call to undefined method Illuminate\Auth\TokenGuard::attempt()"

请问如何验证非默认Guard的凭证,或者有什么解决方案?

解决方案

问题核心在于TokenGuard本身没有attempt()方法,这个方法是SessionGuard的专属方法。针对基于Token的Sanctum认证,需要换一种逻辑完成凭证验证:

  1. 手动校验用户凭证
    直接通过用户模型匹配账号,再验证密码正确性:
$user = \App\Models\User::where('email', $request->email)->first();

if (!$user || !Hash::check($request->password, $user->password)) {
    return response()->json([
        'status' => false,
        'message' => 'Email & Password does not match with our record.',
    ], 401);
}
  1. 生成Sanctum认证Token
    凭证校验通过后,为用户生成API访问Token(移动端通常使用Personal Access Token):
// 可自定义Token名称,比如绑定用户设备标识
$token = $user->createToken('mobile-auth-token')->plainTextToken;

return response()->json([
    'status' => true,
    'token' => $token,
    'user' => $user
]);
  1. 优化Guard配置(可选)
    如果希望mobileGuard适配Sanctum的认证逻辑,可以将Guard的驱动改为sanctum:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
    'mobile' => [
        'driver' => 'sanctum',
        'provider' => 'users',
    ],
],

调整后,后续请求可通过Auth::guard('mobile')->user()获取认证用户,但依然不能使用attempt()方法,凭证校验仍需按步骤1的方式手动完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:17:43