2017-07-10 56 views
6

API yapıyorum ve kimlik doğrulama için Laravel Passport kullanıyorum.Laravel Passport'u kullanarak Parola Hibe İstemcisi için nasıl bir belirteç oluşturabilirim?

API, mobil uygulamamız için kullanılıyor, bu yüzden Password Grant Client kullanıyoruz.

Her şey harika çalışıyor ve kullanıcı erişim belirteci almak için giriş yapabilir. Bir kullanıcının kaydolmasına izin veren bir kayıt bitiş noktası oluşturduk. Bu noktada bir erişim belirteci döndürmek için API'ye ihtiyacımız var.

Dokümanlara bakmak, program aracılığıyla erişim belirteci oluşturmanın bir yolu yoktur.

Denetleyicimde bir Şifre Hibe İstemcisi için bir erişim belirteci nasıl oluşturabilirim? Açıkçası, almak için kendi API'm için bir HTTP isteği yapmak istemiyorum.

Kişisel Erişim Hibe İstemcisi kullanabileceğimi ve kullanıcı modeline createToken numaralı telefonu arayabileceğimi biliyorum, ancak bu erişim belirtecinin farklı bir İstemci ile ilişkili olduğu anlamına gelir. Bu bana doğru görünmüyor.

cevap

0

Ben Kişisel Erişim Hibe Client kullanmak ve kullanıcı modeline createToken çağırabilirsiniz biliyorum, ama bu erişim belirteci demek istediğinizi

emin farklı bir Client ile ilişkili olduğu anlamına gelir, daha fazlasını açıklayabilir misin?

Şimdi bu ideal değildir ama \League\OAuth2\Server\Grant\PasswordGrant enjekte ve tüm bu nesneler oluşturmak gerekir

respondToAccessTokenRequest(ServerRequestInterface $request 
          ResponseTypeInterface $responseType, 
          \DateInterval $accessTokenTTL) 

kullanmak mümkün olabilir ancak bu işlem simge bilgilerinizi döndüren şifre sadece kamu yöntemdir.

2

Birkaç hafta boyunca Passport ile oynuyordum ve belgelerinde gördüklerimden, belirteçleri oluşturmak için kullandığı yöntemlerin çoğunu ortaya çıkarmıyor. “Denetleyicimde bir Şifre Hibe İstemcisi için bir erişim belirteci oluşturmak” mümkün olmasa da, bir jetonun isteğini Passport Password Grant rotanıza iletmek için Route::dispatch kullanabilirsiniz.

sen, Parola Hibe rota erişebilir böylece AuthenticatesUsers özelliği kullanmak, jeton sorunu bir istek oluşturmak için kullandığınız denetleyicisi bunu yapmak ve Şifre Hibe rotaya talep gönderme için:

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Route; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

class IssueTokensController extends Controller 
{ 

    use AuthenticatesUsers; 

    protected function issueApiToken(Request $request) 
    { 
     // forward the request to the oauth token request endpoint 
     $tokenRequest = Request::create(
      '/oauth/token', 
      'post' 
     ); 
     return Route::dispatch($tokenRequest); 
    } 

} 

Bu yöntem elbette Passport ve Password Grant Client kurmanızı gerektirir.

Bu cevap Raymond Lagonda tarafından benzer bir soruya başka bir yanıt off dayanır

- bkz https://stackoverflow.com/a/40433000/4991377

1
Try something like this 
namespace App\Http\Controllers\Api; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Route; 
use App\User; 

class UserController extends Controller 
{ 

    //use AuthenticatesUsers; 
    protected function login(Request $request) 
    { 

     $request->request->add([ 
       'grant_type' => 'password', 
       'client_id'  => '3', 
       'client_secret' => '6BHCRpB4tpXnQvC1DmpT7CXCSz7ukdw7IeZofiKn', 
       'scope' => '*' 
      ]); 

     // forward the request to the oauth token request endpoint 
     $tokenRequest = Request::create('/oauth/token','post'); 
     return Route::dispatch($tokenRequest); 
    } 

}