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)
我遇到了完全相同的错误,因为我忘记将 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)