Laravel 在null上调用成员函数createToken()
我是laravel api和laravel passport的新手,我知道这是一个老问题,但没有答案帮助我。我正在使用laravel passport进行api 注册,登录工作正常,但注销和错误 这是我的注册代码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
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会话的。谢谢你。