2017-02-11 8 views
1

Я знаю, это может показаться дублированным. Я уже проверил эти темы:Auth :: user() возвращает null Laravel 5.1 oauth 2.0

Но я не нашел решение моей проблемы

После успешного получения access_token для пользователя usin g учетные данные Auth :: user() возвращает null в контроллерах.

Вот мой Kernel.php

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class, 
]; 

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'oauth' => \LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware::class, 
    'oauth-user' => \LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware::class, 
    'oauth-client' => \LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware::class, 
    'check-authorization-params' => \LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware::class, 
    'csrf' => \App\Http\Middleware\VerifyCsrfToken::class, 
]; 

Вот мой routes.php

Route::group(['prefix' => $api_prefix, 'middleware' => 'oauth', 'namespace' => 'Api'], function() { 
    Route::resource('user', 'UserController', ['except' => ['create', 'store']]); 
    Route::resource('post', 'PostController'); 

    Route::post('follow/{user}', '[email protected]'); 
    Route::post('unfollow/{user}', '[email protected]'); 
    Route::post('trade/{user}', '[email protected]'); 
    Route::post('untrade/{user}', '[email protected]'); 
    Route::post('capturetime', '[email protected]'); 

});

Любая помощь будет оценена

ответ

2

Вы должны использовать Авторизатор :: getResourceOwnerId(), чтобы получить идентификатор пользователя. После этого вы сможете использовать Auth :: loginUsingId ($ userId) для входа пользователя для этого запроса. Вы можете создать промежуточное программное обеспечение, чтобы сделать это для вас, было бы примерно так:

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    $userId = Authorizer::getResourceOwnerId(); 
    if($userId) { 
     Auth::loginUsingId($userId); 
    } 
    return $next($request); 
}