2017-07-10 9 views
6

मैं एक एपीआई बना रहा हूं और मैं प्रमाणीकरण के लिए लार्वा पासपोर्ट का उपयोग कर रहा हूं।लैरवेल पासपोर्ट का उपयोग कर पासवर्ड अनुदान क्लाइंट के लिए मैं टोकन कैसे बना सकता हूं?

एपीआई का उपयोग हमारे मोबाइल ऐप के लिए किया जा रहा है ताकि हम पासवर्ड अनुदान क्लाइंट का उपयोग कर रहे हों।

सबकुछ बढ़िया काम करता है, और उपयोगकर्ता पहुंच टोकन प्राप्त करने के लिए लॉगिन कर सकता है। हमने एक रजिस्टर एंडपॉइंट बनाया है जो उपयोगकर्ता को साइन अप करने की अनुमति देता है। हमें इस बिंदु पर एक एक्सेस टोकन वापस करने के लिए एपीआई की भी आवश्यकता है।

दस्तावेज़ों के माध्यम से देखकर प्रोग्रामेटिक रूप से एक्सेस टोकन बनाने का कोई तरीका नहीं है।

मैं अपने नियंत्रक में पासवर्ड अनुदान क्लाइंट के लिए एक्सेस टोकन कैसे बना सकता हूं? मैं स्पष्ट रूप से इसे प्राप्त करने के लिए अपने स्वयं के एपीआई के लिए एक HTTP अनुरोध नहीं करना चाहता हूं।

मुझे पता है कि मैं एक व्यक्तिगत एक्सेस अनुदान ग्राहक का उपयोग कर सकता हूं और उपयोगकर्ता मॉडल पर createToken पर कॉल कर सकता हूं, लेकिन इसका मतलब है कि एक्सेस टोकन एक अलग ग्राहक से जुड़ा हुआ है। यह मेरे लिए सही प्रतीत नहीं होता है।

उत्तर

0

मैं जानता हूँ कि मैं एक व्यक्तिगत पहुँच अनुदान क्लाइंट का उपयोग करें और उपयोगकर्ता मॉडल पर createToken कॉल कर सकते हैं, लेकिन इसका मतलब है कि पहुँच टोकन एक अलग ग्राहक

यकीन नहीं आपको लगता है कि द्वारा क्या मतलब है साथ जुड़ा हुआ है, क्या आप और समझा सकते हैं?

अब इस आदर्श नहीं है, लेकिन आप \League\OAuth2\Server\Grant\PasswordGrant इंजेक्षन और प्रयोग

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

आप उन सभी वस्तुओं का निर्माण करने के लिए होगा करने में सक्षम हो सकता है, लेकिन इस पासवर्ड का एकमात्र सार्वजनिक विधि है कि किसी भी टोकन जानकारी देता है।

2

मैं अब कुछ हफ्तों के लिए पासपोर्ट के साथ काम कर रहा हूं और दस्तावेज में जो मैंने देखा है उससे यह टोकन बनाने के लिए उपयोग की जाने वाली कई विधियों का खुलासा नहीं करता है। जबकि आप आसानी से "मेरे नियंत्रक में पासवर्ड अनुदान क्लाइंट के लिए एक्सेस टोकन बनाने में सक्षम नहीं हो सकते हैं" - आप अपने पासपोर्ट पासवर्ड अनुदान मार्ग पर टोकन के अनुरोध को अग्रेषित करने के लिए Route::dispatch का उपयोग कर सकते हैं।

नियंत्रक में ऐसा करने के लिए आप टोकन जारी करने के लिए, AuthenticatesUsers विशेषता उपयोग करें ताकि आप पासवर्ड अनुदान मार्ग की पहुंच है, एक अनुरोध बनाने के प्रयोग कर रहे हैं, और प्रेषण कि पासवर्ड अनुदान रूट करने के लिए अनुरोध करते हैं:

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); 
    } 

} 

इस विधि के लिए आपको पासपोर्ट और पासवर्ड अनुदान ग्राहक सेट अप करने की आवश्यकता है।

इस उत्तर रेमंड Lagonda द्वारा एक समान प्रश्न के लिए एक और जवाब पर ही आधारित होता - देख 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); 
    } 

} 
संबंधित मुद्दे

 संबंधित मुद्दे