护照 - "未经验证的". - Laravel 5.3

Rik*_*son 13 authentication laravel-5.3 laravel-passport

我希望有人可以解释为什么我unauthenticated已经执行了成功的Oauth 2身份验证过程.

我已经Passport像Laravel的文档中那样设置了包,我成功地进行了身份验证,获得了令牌值,等等.但是,当我尝试做一个get请求时,比方说/api/user,我得到一个Unauthenticated错误作为回应.我使用令牌值作为带有键名的标题Authorization,正如文档中所述.

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware("auth:api");
Run Code Online (Sandbox Code Playgroud)

这个函数假设让我自己作为经过身份验证的用户,但我只是得到了Unauthenticated.同样,如果我只是返回第一个用户,我会再次获得Unauthenticated.

Route::get('/test', function(Request $request) {
    return App\User::whereId(1)->first();
})->middleware("auth:api");
Run Code Online (Sandbox Code Playgroud)

在从一个教程Laracast,通过设置导向Passport,导向器具备->middleware("auth:api")在他的路线.但如果不存在,那么就根本不需要身份验证!

请,任何建议或答案都欢迎!

小智 5

您必须为要生成的令牌设置到期日期,

将AuthServiceProvider中的启动方法设置为类似下面的代码,并尝试生成新令牌.护照默认过期返回负数

public function boot()
{
  $this->registerPolicies();
   Passport::routes();
   Passport::tokensExpireIn(Carbon::now()->addDays(15));
   Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
Run Code Online (Sandbox Code Playgroud)

  • ``默认情况下,Passport发出不需要刷新的长期访问令牌。-https://laravel.com/docs/5.4/passport#configuration (2认同)

con*_*nfm 1

我遇到了完全相同的错误,因为我忘记将 http 放在项目名称之前。

use Illuminate\Http\Request;

Route::get('/', function () {
    $query = http_build_query([
        'client_id' => 3,
        'redirect_uri' => 'http://consumer.dev/callback',
        'response_type' => 'code',
        'scope' => '',
    ]);

    // The redirect URL should start with http://
    return redirect('passport.dev/oauth/authorize?'.$query);
});

Route::get('/callback', function (Request $request) {
    $http = new GuzzleHttp\Client;

    $response = $http->post('http://passport.dev/oauth/token', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => 3,
            'client_secret' => 'M8y4u77AFmHyYp4clJrYTWdkbua1ftPEUbciW8aq',
            'redirect_uri' => 'http://consumer.dev/callback',
            'code' => $request->code,
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
});
Run Code Online (Sandbox Code Playgroud)