2016-08-20 26 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); 
    } 
} 
相關問題