2016-08-20 4 views
0

私はLaravel REST APIにTymon/JWT-Authパッケージを使用しています。私のroutes.phpファイルでは、認証されていないユーザーのためのルートと認証されたユーザーのルートを追加できます。どのユーザーがLaravel JWT認証でルートにアクセスできるようにするには?

認証されていないユーザーのルートは、認証ヘッダーを無視します。しかし、ヘッダーが有効であれば、許可されたユーザーのデータを利用できるルートグループが必要です。設定されていないか無効な場合は、別の操作を実行してください。

このような機能を実装する方法はありますか、またはJWTAuthパッケージの組み込みミドルウェアのソリューションがありますか?

答えて

0

このジレンマを解決するために、JWTAuth GetUserFromTokenミドルウェアに基づいて独自のミドルウェアを作成し、カーネルファイルのrouteMiddleware配列に追加しました。

RouteMiddleware

<?php 

namespace App\Http\Middleware; 

use Tymon\JWTAuth\Exceptions\JWTException; 
use Tymon\JWTAuth\Exceptions\TokenExpiredException; 

class NeutralRoute extends \Tymon\JWTAuth\Middleware\BaseMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, \Closure $next) 
    { 
     $token = $this->auth->setRequest($request)->getToken(); 

     if($token){ 
      try { 
       $user = $this->auth->authenticate($token); 
      } catch (TokenExpiredException $e) { 
       return $this->respond('tymon.jwt.expired', 'token_expired', $e->getStatusCode(), [$e]); 
      } catch (JWTException $e) { 
       return $this->respond('tymon.jwt.invalid', 'token_invalid', $e->getStatusCode(), [$e]); 
      } 
      if($user){ 
       $this->events->fire('tymon.jwt.valid', $user); 
      } 
     } 

     return $next($request); 
    } 
} 
関連する問題