护照 - "未经认证。" - Laravel 5.3

时间:2016-08-30 12:58:57

标签: authentication laravel-5.3 laravel-passport

我希望有人可以在已经执行成功unauthenticated身份验证过程的情况下解释原因Oauth 2

我已经像Laravel的文档中那样设置了Passport包,我成功通过了身份验证,获得了令牌值,等等。但是,当我尝试执行get请求时,假设/api/user,我收到Unauthenticated错误作为回复。我使用标记值作为标题为Authorization的标题,正如文档中所述。

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

此功能假设将我自己作为经过身份验证的用户回馈,但我只获得Unauthenticated。同样,如果我只是返回第一个用户,我又会再次获得Unauthenticated

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

Laracast的教程中,指导人员Passport的设置,导师在他的路线中有->middleware("auth:api")。但如果不存在,那么就根本不需要身份验证!

请随时欢迎任何建议或答案!

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

检查您的用户模型和数据库表,如果您修改了主要ID字段名称,请说出" id"甚至" user_id"你可能遇到问题。我调试了一个关于修改我的用户模型和数据库表中的主要id字段的问题,说" acct_id"而不是保持它只是" id"结果是" Unauthenticated"当我尝试通过auth:api中间件通过GET / user获取用户对象时。请记住,我在阳光下尝试了其他所有修复程序,直到我决定自己调试它。

还要务必更新护照。因为最近几周它已经做了一些改变。

我将在下面链接我的参考资料,它非常详细,定义明确我做了什么,以及我如何解决问题。

享受!

https://github.com/laravel/passport/issues/151

答案 2 :(得分:1)

我遇到此错误是因为我删除了护照mysql表(php artisan migrate:fresh),php artisan passport:install可以帮助我。请记住,删除桌子后,您需要重新安装护照!

答案 3 :(得分:0)

我有完全相同的错误,因为我忘了在项目名称之前放置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);
});