J'ai construit un exemple de projet Laravel en utilisant mongodb (Jenssegers Mongodb) et j'utilise un passeport à Laravel 5,4 suivre by this document.Laravel 5.4 jeton d'accès passeport mongodb Unauthenticated
Tout fonctionne bien jusqu'à ce que je pris un jeton d'accès à Postman pour le test, prenez maintenant un oeil à mon api.php
itinéraire
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Dans postier, je configurer deux têtes qui sont Accept: application/json
et Authorization: Bearer $TOKEN
et je suis très Assurez-vous que mon jeton d'accès n'est pas la copie manquante faute mais toujours obtenir une erreur.
{
"error": "Unauthenticated."
}
choses que j'ai essayé
Je Ecraser champ par défaut id
dans le modèle User.php
use Authenticatable, Authorizable, CanResetPassword, Notifiable, HasApiTokens;
protected $collection = 'users';
protected $fillable = ['username', 'email', 'password', 'name'];
protected $primaryKey = '_id';
Je modifie également le temps d'expiration du jeton dans AuthserviceProvider.php
comme si
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addYears(20));//You can also use addDays(10)
Passport::refreshTokensExpireIn(Carbon::now()->addYears(20));//You can also use addDays(10)
Passport::pruneRevokedTokens(); //basic garbage collector
Passport::tokensCan([
'conference' => 'Access your conference information'
]);
}
Et d'autres façons, mais ne fonctionne toujours pas.
Mise à jour pour le débogage infomation
Quand j'ajoute try catch
pour public/index.php
, une erreur apperead
League\OAuth2\Server\Exception\OAuthServerException: The resource owner or authorization server denied the request. in /data/www/public_html/xxxx/vendor/league/oauth2-server/src/Exception/OAuthServerException.php:165
Stack trace:
#0 /data/www/public_html/xxxx/vendor/league/oauth2-server/src/AuthorizationValidators/BearerTokenValidator.php(66): League\OAuth2\Server\Exception\OAuthServerException::accessDenied('Access token ha...')
#1 /data/www/public_html/xxxx/vendor/league/oauth2-server/src/ResourceServer.php(82): League\OAuth2\Server\AuthorizationValidators\BearerTokenValidator->validateAuthorization(Object(Zend\Diactoros\ServerRequest))
......
Quand je vérifie le fichier vendor\league\oauth2-server\src\AuthorizationValidators\BearerTokenValidator.php
à line 66
. Semble mon jeton d'accès a été révoqué, mais dans ma base de données revoked
colonne toujours faux, et ce jeton d'accès est flambant neuf, je viens de créer il ya quelques minutes.
if ($this->accessTokenRepository->isAccessTokenRevoked($token->getClaim('jti'))) {
throw OAuthServerException::accessDenied('Access token has been revoked');
}
Une idée?