2017-01-26 1 views
1

Ich versuche, die Authentifizierung mit Laravel 5.3 und Angular 2 mit JWT zu implementieren.Lavarel 5.3 und JWT. Ich bekomme {"error": "token_not_provided"} für alle Routen bekommen

Die Auth Teil arbeitet, und ich bin in der Lage das Token zu bekommen, aber ich versuche, zu jedem bekommt Routen nagivate, Ich erhalte einen Fehler

Der Code

I den Provider und Aliase, sowie öffentliche Ordner mit dem Verkäufer und generiert den Schlüssel von jwt

In meinem Kernel hinzugefügt haben ich diese hinzugefügt haben:

'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class, 
'jwt.refresh' => \TymonJWTAuth\Middleware\RefreshToken::class, 

und csrfToken deaktiviert haben.

Das sind meine Routen

Route::resource('authenticate', 'AuthController', ['only' => ['index']]); 
Route::post('authenticate', '[email protected]'); 
Route::post('logout', '[email protected]'); 

Und meine AuthController

class AuthController extends Controller 
{ 

    public function __construct() 
    { 
     // Apply the jwt.auth middleware to all methods in this controller 
     // except for the authenticate method. We don't want to prevent 
     // the user from retrieving their token if they don't already have it 
     $this->middleware('jwt.auth', ['except' => ['authenticate']]); 
    } 

    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     // Get all roles 
     $users = User::with('role', 'branch')->get(); 

     // Send the response 
     return response()->json([ 
       'users' => $users 
      ], 200); 
    } 

    // Authentification 
    public function authenticate(Request $request) 
    { 

     // Retrieve email 
     $email    = $request->input('email'); 

     $credentials = $request->only('email', 'password'); 

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

     // Retrieve user 
     $user = User::where('email', '=', $email)->first();   

     // if no errors are encountered we can return a JWT 
     return response()->json(compact('token')); 

     // return response()->json([ 
     //  'user' => $user, 
     //  'token' => compact('token') 
     // ], 200); 

    } 

    // Logout 
    public function logout(Request $request) 
    { 
     $this->validate($request, [ 
      'token' => 'required' 
     ]); 

     JWTAuth::invalidate($request->input('token')); 
    } 

} 

Wie gesagt, ich das Token nach Authentifizierung bekommen könnte, aber wenn ich dieses Token bin mit einem gewissen Route zu navigieren als diese:

Route::resource('authenticate', 'AuthController', ['only' => ['index']]); 

ich dieses Ergebnis zu erzielen:

{ 
    "error": "token_not_provided" 
} 

enter image description here

Antwort

0

Wenn Ihr Web-Server Apache ist. Sie benötigen diese

RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 

in Ihre .htaccess-Datei in /path/to/project/public/.htaccess hinzuzufügen.

Dies ist oft die Ursache für diesen Fehler. Überprüfen Sie diesen Link für weitere Informationen. https://github.com/tymondesigns/jwt-auth/wiki/Authentication

Verwandte Themen