Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

andy0517's avatar

Laravel passport API, method attempt does not exist.

Currently I am using the passport to do the API authentication. While I doing the login function, it returns me BadMethodCallException method attempt does not exist.

public function login(Request $request)
    {

      $validator = Validator::make($request->all(), [
          'email' => 'required|email',
          'password' => 'required',
        ]);
      if ($validator->fails()) {
        return response()->json(['error'=>$validator->errors()], 401);
      }

      $credentials = $request->only('email', 'password');

      if(Auth::guard('member-api')->attempt($credentials))
      {
        //return response()->json(['sucess'=>'Success'], 401);
        $user = Auth::guard('member-api')->user();
        $success['token'] =  $user->createToken('asApp')->accessToken;
        return response()->json(['success' => $success], 200);
      }else {
        return response()->json(['error'=>'Email or password incorrect'], 401);
      }
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
        'member-api' => [
          'driver' => 'passport',
          'provider' => 'members',
        ],
    ],

it seems like the guard in front of attempt cause the problem, but i can't find the solution to solve it. Anyone have idea about it?

0 likes
3 replies
andy0517's avatar

@tisuchi

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('login','APIAuthController@login');
Route::post('register','APIAuthController@register');

Route::group(['middleware' => 'auth:member-api'], function(){
  Route::post('/member', 'APIAuthController@details');
});

Please or to participate in this conversation.