Laravel Passport Issue - PullRequest
       14

Laravel Passport Issue

0 голосов
/ 12 июня 2019

Я пытаюсь установить свои 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

Если я вызываю / api / auth / getadata без заголовков, он работает без контроля.

enter image description here

Если я пытаюсь получить пользователя, он пуст {}

enter image description here

Я надеюсь получитьнекоторая помощь, пытаясь понять правильный поток.Спасибо.

...