在null上调用成员函数createToken()?

时间:2018-04-18 13:06:22

标签: laravel restful-authentication

当我使用护照包时,我遇到了这个错误

  

在null

上调用成员函数createToken()

为什么我会收到此错误?

这是我的代码:

$users = Users::where('Email' , $username)
              ->where( 'Password' , $password)
              ->where('UserStatus' , config('global.active'))
              ->first();

if($users) {
    $success['token'] =  $users->createToken('MyApp')->accessToken;
    return response()->json(['success' => $success], $this->successStatus);
} else {
    return response()->json(['error'=>'Unauthorised'], 401);
}

2 个答案:

答案 0 :(得分:0)

$user = Auth::user();是不必要的,是造成错误的原因。

$user = Users::where('Email' , $username)->where( 'Password' , $password)->where('UserStatus' , config('global.active'))->first();
if($user){
    $success['token'] =  $user->createToken('MyApp')->accessToken;
    return response()->json(['success' => $success], $this->successStatus);
}else{
    return response()->json(['error'=>'Unauthorised'], 401);
}

答案 1 :(得分:0)

如果$users为空,则无法调用调用createToken调用结构的部分。我想知道这是不是一个红鲱鱼,这里有一些中间件在工作。实际上有三个同名方法的实例,并且错误消息中的命名空间在那里没有显着:

  • /vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
  • /vendor/laravel/passport/src/ApiTokenCookieFactory.php
  • /vendor/laravel/passport/src/HasApiTokens.php

最后一个是User模型使用的特征,并且是您正在调用的特征。但我想知道这个错误是否真的来自其他两个错误之一。检查错误日志,可能在/storage/logs/laravel.log中,看看是否有可能提供线索的堆栈跟踪。