2015-03-12 23 views
12

में उपयोगकर्ता भूमिका जोड़ें मेरे पास एक लार्वेल 5 बैकएंड है जो jwt-auth के साथ लॉगिन पर एक जेसन प्रतिक्रिया के रूप में एक jwt-टोकन भेजता है।jwt, laravel 5 jwt-auth

यह मेरे वर्तमान नियंत्रक

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use JWTAuth; 
use Tymon\JWTAuth\Exceptions\JWTException; 
use Illuminate\Database\Eloquent\Model; 
use App\User; 

class AuthenticateController extends Controller 
{ 
    public function authenticate(Request $request) 
    { 
     // grab credentials from the request 
     $credentials = $request->only('email', 'password'); 
     $user = User::where('email', '=', $credentials['email'])->first(); 
     $customClaims = ['role' => $user->role]; 

     try { 
      // attempt to verify the credentials and create a token for the user 
      if (! $token = JWTAuth::attempt($credentials, $customClaims)) { 
       return response()->json(['error' => 'invalid_credentials'], 401); 
      } 
     } catch (JWTException $e) { 
      // something went wrong whilst attempting to encode the token 
      return response()->json(['error' => 'could_not_create_token'], 500); 
     } 
     // all good so return the token 
     return response()->json(compact('token')); 
    } 
} 
?> 

है वहाँ एक क्लीनर तरीका है:

अब मैं जेडब्ल्यूटी टोकन laravel भेजता है करने के लिए उपयोगकर्ता भूमिका जोड़ना चाहते हैं, मैं निम्नलिखित तरीके से करने की कोशिश की यह करने के लिए ?

+0

PHP के लिए जेडब्ल्यूटी खराब दस्तावेज है। एक साधारण लॉगिन/लॉगआउट सिस्टम बनाने के लिए दर्दनाक है! इसके बारे में मेरे प्रश्न देखें। – Maykonn

+0

मैं वही चीज़ ढूंढ रहा था, क्या आपको कोई समाधान मिला? – kitensei

+0

मैं ऊपर दिए गए समाधान के साथ गया, भले ही यह एक और सवाल है। एक क्लीनर समाधान – RVandersteen

उत्तर

2

वर्तमान में आप दो बार उपयोगकर्ता के लिए पूछताछ कर रहे हैं, एक बार भूमिका प्राप्त करने के उद्देश्य के लिए ईमेल का उपयोग कर रहे हैं और jwt::attempt() विधि के भीतर दूसरा। मैं सुझावों को कम करने का सुझाव दूंगा लेकिन प्रमाणीकरण कर रहा हूं {Auth :: प्रयास ($ credientials)} और फिर कस्टम दावा के साथ पुनर्प्राप्त उपयोगकर्ता को JWT::fromUser() विधि में पास कर रहा है। इसलिए

JWT::fromUser($user,['role' => $user->role]) 
1

यह अजीब, प्रयास() विधि के लिए दूसरा पैरामीटर के रूप में कुछ $ customClaims को निर्दिष्ट वास्तव में मेरे लिए काम करता है।

हालांकि, क्या आपने JWTFactory फेकाडे का उपयोग करने का प्रयास किया है? यह आपको हर तरह के टोकन बनाने की सुविधा देता है।

आप यहां अधिक जानकारी प्राप्त कर सकते हैं: JWT-Auth Creating Tokens Page

installation guide suggests के रूप में, JWT-Auth इंस्टॉल करते समय इसे एक फेकाडे के रूप में जोड़ने के लिए मत भूलना!

उम्मीद है कि यह मदद करता है!

0

ऐसा लगता है कि JWTAuth [0.5.9] के वर्तमान स्थिर संस्करण में क्लीनर तरीका नहीं है।

निम्न समस्याओं #89#108

के रूप में लेखक अपने टिप्पणी में कहा है कि इस मुद्दे को कवर अपनी अगली रिलीज में सुधार हो जाएगा पर एक नजर डालें। आप अपनी विकास शाखा पर एक नज़र डाल सकते हैं।

+0

कुछ कोड परीक्षा साझा करके उसे मदद करें – Mostafiz

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