Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在null上调用成员函数createToken()_Laravel_Laravel Passport_Laravel 7 - Fatal编程技术网

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

Laravel 在null上调用成员函数createToken(),laravel,laravel-passport,laravel-7,Laravel,Laravel Passport,Laravel 7,我是laravel api和laravel passport的新手,我知道这是一个老问题,但没有答案帮助我。我正在使用laravel passport进行api 注册,登录工作正常,但注销和错误 这是我的注册代码 public function register (Request $request) { $validator = Validator::make($request->all(), [ 'UserName' => 'required|st

我是laravel api和laravel passport的新手,我知道这是一个老问题,但没有答案帮助我。我正在使用laravel passport进行api 注册,登录工作正常,但注销和错误

这是我的注册代码

 public function register (Request $request) {
    $validator = Validator::make($request->all(), [
            'UserName' => 'required|string|max:255',
            'UserFullName' => 'string|max:255',
            'UserEmail' => 'required|string|email|max:255|unique:users',
            'UserPhone' => 'required|string|max:255|unique:users',
            'Password' => 'required|string|min:6|confirmed',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        if ($request['UserPhone']==Null) { // will check for empty string, null values, see php.net about it
            $request['UserPhone'] = NULL;
        }
        $request['Password']=Hash::make($request['Password']);
        $request['remember_token'] = Str::random(10);
        $request['UserType'] = $request['UserType'] ? $request['UserType']  : 1;
        //return response($request, 200);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        //return response($token, 200);
        $response['data']= $user;
        $response['data']['token'] = $token;
        return response($response, 200);
    }
    public function login (Request $request) {
        $validator = Validator::make($request->all(), [
            'UserEmail' => 'required|string|email|max:255',
            'Password' => 'required|string|min:6',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        $user = User::where('UserEmail', $request->UserEmail)->first();
        if ($user) {
            if (Hash::check($request->Password, $user->Password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response['data']= $user;
                $response['data']['token'] = $token;
                return response($response, 200);
            } else {
                $response = ["message" => "Password mismatch"];
                return response($response, 422);
            }
        } else {
            $response = ["message" =>'User does not exist'];
            return response($response, 422);
        }
    }
public function logout (Request $request) {
        //return $request->Authorization;
        $token = $request->user()->token();
        //return $token;
        $token->revoke();
        $response = ['message' => 'You have been successfully logged out!'];
        return response($response, 200);
    }
"message": "Call to a member function createToken() on null",
    "exception": "Error",
我的登录代码

 public function register (Request $request) {
    $validator = Validator::make($request->all(), [
            'UserName' => 'required|string|max:255',
            'UserFullName' => 'string|max:255',
            'UserEmail' => 'required|string|email|max:255|unique:users',
            'UserPhone' => 'required|string|max:255|unique:users',
            'Password' => 'required|string|min:6|confirmed',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        if ($request['UserPhone']==Null) { // will check for empty string, null values, see php.net about it
            $request['UserPhone'] = NULL;
        }
        $request['Password']=Hash::make($request['Password']);
        $request['remember_token'] = Str::random(10);
        $request['UserType'] = $request['UserType'] ? $request['UserType']  : 1;
        //return response($request, 200);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        //return response($token, 200);
        $response['data']= $user;
        $response['data']['token'] = $token;
        return response($response, 200);
    }
    public function login (Request $request) {
        $validator = Validator::make($request->all(), [
            'UserEmail' => 'required|string|email|max:255',
            'Password' => 'required|string|min:6',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        $user = User::where('UserEmail', $request->UserEmail)->first();
        if ($user) {
            if (Hash::check($request->Password, $user->Password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response['data']= $user;
                $response['data']['token'] = $token;
                return response($response, 200);
            } else {
                $response = ["message" => "Password mismatch"];
                return response($response, 422);
            }
        } else {
            $response = ["message" =>'User does not exist'];
            return response($response, 422);
        }
    }
public function logout (Request $request) {
        //return $request->Authorization;
        $token = $request->user()->token();
        //return $token;
        $token->revoke();
        $response = ['message' => 'You have been successfully logged out!'];
        return response($response, 200);
    }
"message": "Call to a member function createToken() on null",
    "exception": "Error",
我的注销代码

 public function register (Request $request) {
    $validator = Validator::make($request->all(), [
            'UserName' => 'required|string|max:255',
            'UserFullName' => 'string|max:255',
            'UserEmail' => 'required|string|email|max:255|unique:users',
            'UserPhone' => 'required|string|max:255|unique:users',
            'Password' => 'required|string|min:6|confirmed',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        if ($request['UserPhone']==Null) { // will check for empty string, null values, see php.net about it
            $request['UserPhone'] = NULL;
        }
        $request['Password']=Hash::make($request['Password']);
        $request['remember_token'] = Str::random(10);
        $request['UserType'] = $request['UserType'] ? $request['UserType']  : 1;
        //return response($request, 200);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        //return response($token, 200);
        $response['data']= $user;
        $response['data']['token'] = $token;
        return response($response, 200);
    }
    public function login (Request $request) {
        $validator = Validator::make($request->all(), [
            'UserEmail' => 'required|string|email|max:255',
            'Password' => 'required|string|min:6',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        $user = User::where('UserEmail', $request->UserEmail)->first();
        if ($user) {
            if (Hash::check($request->Password, $user->Password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response['data']= $user;
                $response['data']['token'] = $token;
                return response($response, 200);
            } else {
                $response = ["message" => "Password mismatch"];
                return response($response, 422);
            }
        } else {
            $response = ["message" =>'User does not exist'];
            return response($response, 422);
        }
    }
public function logout (Request $request) {
        //return $request->Authorization;
        $token = $request->user()->token();
        //return $token;
        $token->revoke();
        $response = ['message' => 'You have been successfully logged out!'];
        return response($response, 200);
    }
"message": "Call to a member function createToken() on null",
    "exception": "Error",
邮差回复

 public function register (Request $request) {
    $validator = Validator::make($request->all(), [
            'UserName' => 'required|string|max:255',
            'UserFullName' => 'string|max:255',
            'UserEmail' => 'required|string|email|max:255|unique:users',
            'UserPhone' => 'required|string|max:255|unique:users',
            'Password' => 'required|string|min:6|confirmed',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        if ($request['UserPhone']==Null) { // will check for empty string, null values, see php.net about it
            $request['UserPhone'] = NULL;
        }
        $request['Password']=Hash::make($request['Password']);
        $request['remember_token'] = Str::random(10);
        $request['UserType'] = $request['UserType'] ? $request['UserType']  : 1;
        //return response($request, 200);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        //return response($token, 200);
        $response['data']= $user;
        $response['data']['token'] = $token;
        return response($response, 200);
    }
    public function login (Request $request) {
        $validator = Validator::make($request->all(), [
            'UserEmail' => 'required|string|email|max:255',
            'Password' => 'required|string|min:6',
        ]);
        if ($validator->fails())
        {
            return response(['errors'=>$validator->errors()->all()], 422);
        }
        $user = User::where('UserEmail', $request->UserEmail)->first();
        if ($user) {
            if (Hash::check($request->Password, $user->Password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response['data']= $user;
                $response['data']['token'] = $token;
                return response($response, 200);
            } else {
                $response = ["message" => "Password mismatch"];
                return response($response, 422);
            }
        } else {
            $response = ["message" =>'User does not exist'];
            return response($response, 422);
        }
    }
public function logout (Request $request) {
        //return $request->Authorization;
        $token = $request->user()->token();
        //return $token;
        $token->revoke();
        $response = ['message' => 'You have been successfully logged out!'];
        return response($response, 200);
    }
"message": "Call to a member function createToken() on null",
    "exception": "Error",

问题是授权,似乎所有带有授权头的post api都应该通过身份验证检查,我将注销路径移动到中间件中

Route::group(['middleware'=>['auth:api']],function(){
Route::get('/companies', 'CompanyController@index')->name('companies');
});
但是我不确定为什么它不能与if(Auth:check)一起工作{ …进一步撤销代码 ...
}

您可以使用此路由组,它将正常工作

Route::group(['middleware'=>['auth:api']],function(){
    Route::post('/logout', 'Api\AuthController@logout');    
});


看起来您的注销API不是在调用注销函数,而是在调用登录/注册函数。检查是否调用了注销函数,如果是,则检查函数执行到哪一点时没有任何错误。因此,您可以找到抛出错误的确切行谢谢您的帮助。我不确定您所说的注销功能是什么意思,如果我没有记错您所说的laravel Auth::logout,我想这是用于web会话的。谢谢你。