Laravel API TOKEN 身份验证无效
Laravel API TOKEN authentication not working
我正在尝试使用 api authentication token
对用户进行身份验证。但即使在使用正确的令牌后,它的说法也是未经授权的。
我正在使用 laravel 身份验证和 socialite 进行社交身份验证
所以我的 api.php
路线是这样的
Route::group(['middleware'=>'auth:api'], function(){
Route::get('hello','ApiTestControler@index');
});
我正在尝试使用 url
访问它
http://localhost:8000/api/hello
在 header
token: TOKEN HERE
Content-Type: application/json
Accept: application/json
我原以为它会让我登录并显示 ApiTestController index methord
但是它抛出一个错误 401 unauthorized
我如何解决此问题并使用 API 令牌进行用户身份验证?
我的控制器
class ApiTestController extends Controller
{
public function index(){
return json_encode ("Welcome REST API");
}
}
用户迁移table
$table->increments('id');
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('token');
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
以及config\auth.php
中的auth配置
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
]
我发现唯一可能导致问题的是数据库中 token
列的名称,它应该是 api_token
,所以将迁移更改为:
$table->increments('id');
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('api_token', 60)->unique(); //<-- this one here
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
不要忘记刷新数据库,还有一件事要获得您必须使用的经过身份验证的用户:
Auth::guard('api')->user()
而不是:
Auth::user()
我正在尝试使用 api authentication token
对用户进行身份验证。但即使在使用正确的令牌后,它的说法也是未经授权的。
我正在使用 laravel 身份验证和 socialite 进行社交身份验证
所以我的 api.php
路线是这样的
Route::group(['middleware'=>'auth:api'], function(){
Route::get('hello','ApiTestControler@index');
});
我正在尝试使用 url
访问它http://localhost:8000/api/hello
在 header
token: TOKEN HERE
Content-Type: application/json
Accept: application/json
我原以为它会让我登录并显示 ApiTestController index methord
但是它抛出一个错误 401 unauthorized
我如何解决此问题并使用 API 令牌进行用户身份验证?
我的控制器
class ApiTestController extends Controller
{
public function index(){
return json_encode ("Welcome REST API");
}
}
用户迁移table
$table->increments('id');
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('token');
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
以及config\auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
]
我发现唯一可能导致问题的是数据库中 token
列的名称,它应该是 api_token
,所以将迁移更改为:
$table->increments('id');
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('api_token', 60)->unique(); //<-- this one here
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
不要忘记刷新数据库,还有一件事要获得您必须使用的经过身份验证的用户:
Auth::guard('api')->user()
而不是:
Auth::user()