2017-12-18 18 views
1

전달 된 API 키의 유효성을 검사하는 인증 미들웨어가 있습니다. 데이터베이스에서 사용자 ID를 가져 와서 요청 배열에 저장하여 요청 페이지가 사용자 ID를 가져옵니다.Laravel 미들웨어에서 요청 배열에 값을 추가하는 것이 좋습니다.

public function handle($request, Closure $next) { 

     $key = $request->get('key'); 

     $user = User::where('token', '=' ,$key)->first(); 

       if($user != null){ 

        $request->request->add(['middlewareUserID' => $user->id]); 
        return $next($request); 
        } 
        else { 
        return response(401); 
        } 
    } 

좋은 방법입니까?

+0

[코드 검토] (https://codereview.stackexchange.com/)에 더 적합할까요? – FirstOne

답변

1

나는 그런 경우에는 필요하지 않다고 말하고 싶습니다.

는 는

나는이 유사한 코드를 사용합니다 :

use Illuminate\Contracts\Auth\Guard; 

class YourMiddleware 
{ 
    protected $guard; 

    public function __construct(Guard $guard) 
    { 
     $this->guard = $guard; 
    } 

    public function handle($request, Closure $next) { 

     $key = $request->get('key'); 

     $user = User::where('token', '=' ,$key)->first(); 

     if(!$user){ 
      return response(401); 
     } 

     $this->guard->setUser($user); 
     return $next($request); 

    } 
} 

그래서 당신은 라인 $this->guard->setUser($user);에서 사용자를 인증 할 수 있으며 토큰이 무효 인 경우에 당신이 return response(401);

내가 돈 돌려 토큰 주어진 사용자가있을 때 ' 요청한대로이 사용자 ID를 설정해야 할 필요는 없습니다.

+0

죄송합니다.이 경비병은 무엇입니까? –

+1

위에서 보았 듯이 인증 후에 사용자를 인증 할 수있게 해주는'\ Illuminate \ Contracts \ Auth \ Guard'는 응용 프로그램에서'auth() -> user()'를 사용하여 인증 된 사용자를 얻거나'$ request-> user()'를 호출하여 사용자 인스턴스를 가져옵니다. –