【发布时间】:2020-06-30 03:56:07
【问题描述】:
我是 laravel api 和 laravel 护照的新手,我知道这是一个老问题,但没有答案帮助我。我正在使用 laravel 护照作为 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",
【问题讨论】:
-
您的注销 API 似乎不是在调用注销函数,而是在调用登录/注册函数。检查是否调用了注销函数,如果是,则该函数执行到什么时候没有任何错误。这样您就可以找到引发错误的确切行
-
感谢您的帮助。我不确定您所说的注销功能是什么意思,如果我没有弄错您对 laravel Auth::logout 的看法,我认为这是用于网络会话的。无论如何,谢谢。
标签: laravel laravel-passport laravel-7