Laravel 8 登录 JWT 验证总是 401
Laravel 8 Login JWT Auth always 401
我在 Laravel 8 中使用 'tymon/jwt-auth'。我完全按照 'https://jwt-auth.readthedocs.io/en/docs/laravel-installation/' 上的步骤操作,但我仍然总是收到 401 Unauthorized。
我在 Postman 中调试时无法找出原因,而且我所做的与教程中的人所做的没有什么不同。我在网上查了一下,有些人怀疑密码可能不是作为加密字符串 (md5) 读取的。有什么想法吗?
AuthController.php:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (! $token = $this->guard()->attempt($credentials)) {
return response()->json(['error' => 'Email or Password invalid'], 401);
}
return $this->respondWithToken($token);
}
Inside User Model:
<?php
namespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject
{
use Notifiable;
// Rest omitted for brevity
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
}
config/auth.php:
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
router/api.php:
Route::group([
'middleware' => 'api',
'namespace' => 'App\Http\Controllers',
'prefix' => 'auth'
], function ($router) {
Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');
});
我不得不在密码字段中使用 bcrypt 格式而不是 md5。
我在 Laravel 8 中使用 'tymon/jwt-auth'。我完全按照 'https://jwt-auth.readthedocs.io/en/docs/laravel-installation/' 上的步骤操作,但我仍然总是收到 401 Unauthorized。
我在 Postman 中调试时无法找出原因,而且我所做的与教程中的人所做的没有什么不同。我在网上查了一下,有些人怀疑密码可能不是作为加密字符串 (md5) 读取的。有什么想法吗?
AuthController.php:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (! $token = $this->guard()->attempt($credentials)) {
return response()->json(['error' => 'Email or Password invalid'], 401);
}
return $this->respondWithToken($token);
}
Inside User Model:
<?php
namespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject
{
use Notifiable;
// Rest omitted for brevity
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
}
config/auth.php:
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
router/api.php:
Route::group([
'middleware' => 'api',
'namespace' => 'App\Http\Controllers',
'prefix' => 'auth'
], function ($router) {
Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');
});
我不得不在密码字段中使用 bcrypt 格式而不是 md5。