Я пытаюсь установить свои API, проверяющие токены доступа.Я установил Passport в соответствии с документацией на https://laravel.com/docs/5.8/passport. Я тестирую его с почтальоном.
Когда я вхожу в систему, я получаю токен доступа.Проблема в том, что когда я пробую маршруты под промежуточным программным обеспечением auth: api, кажется, что нет никакого контроля, и они работают, даже если я не устанавливаю заголовки токена.
config / auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
// 'hash' => false,
],
],
AuthServiceProvider.php
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
//
}
}
маршрутов / api.php
Route::group([
'prefix' => 'auth'
], function () {
Route::post('login', 'Auth\AuthController@login')->name('login');
Route::post('register', 'Auth\AuthController@register');
Route::group([
'middleware' => 'auth:api'
], function() {
Route::get('logout', 'Auth\AuthController@logout');
Route::get('user', 'Auth\AuthController@user');
Route::get('getdata', array('uses' => 'DataController@getData' ));
});
});
Http \ Controllers \ Auth \ AuthController.php
class AuthController extends Controller
{
public function login(Request $request) {
$request->validate([
'utente' => 'required|string',
'password' => 'required|string',
//'remember_me' => 'boolean'
]);
$credentials = request(['utente', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'user'=>$request->user(),
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
public function register(Request $request)
{
$request->validate([
'nome' => 'required|string',
'cognome' => 'required|string',
'utente'=>'required|string',
'email' => 'required|string|email|unique:users',
'password' => 'required|string'
]);
$user = new User;
$user->nome = $request->nome;
$user->cognome = $request->cognome;
$user->email = $request->email;
$user->utente = $request->email;
$user->password = bcrypt($request->password);
$user->save();
return response()->json([
'message' => 'Successfully created user!'
], 201);
}
public function logout(Request $request)
{
$request->user()->token()->revoke();
return response()->json([
'message' => 'Successfully logged out'
]);
}
/**
* Get the authenticated User
*
* @return [json] user object
*/
public function user(Request $request)
{
return response()->json($request->user());
}
}
Так что, если я войду в систему, яполучить токен доступа
![enter image description here](https://i.stack.imgur.com/m2lcV.png)
Если я вызываю / api / auth / getadata без заголовков, он работает без контроля.
![enter image description here](https://i.stack.imgur.com/hYbXf.png)
Если я пытаюсь получить пользователя, он пуст {}
![enter image description here](https://i.stack.imgur.com/uJgTt.png)
Я надеюсь получитьнекоторая помощь, пытаясь понять правильный поток.Спасибо.