2017-01-05 3 views
1

yii2에서 Rest API를 구현 중입니다. 액세스 토큰을 사용하여 사용자를 인증하려고합니다. Yii2 Rest API 사용자 인증

  • Yii2 Rest api authenticationRest api bearer authentication
  • Rest api bearer auth

    • 을 다음과 같이 내가 여러 SO 답변을 언급 한하지만 내가 사용해야하는 인증 방법 및 I 사용자 ID를 얻는 방법, 명확하지 해요.

      Yii2 Rest guide에서 제안한대로 사용자 정의 클래스에 findIdentityByAccessToken() 메서드를 만들었습니다.

      public function behaviors() { 
           $behaviors = parent::behaviors(); 
           $behaviors['authenticator'] = [ 
            'class' => HttpBasicAuth::className(), 
            'except' => ['login','forgot-password'] 
           ]; 
      
           return $behaviors; 
          } 
      

      지금, 내 컨트롤러 액션 내부의 사용자 ID를 얻을 것이다 어떻게 내 컨트롤러에 behaviour을 구현 아래

      인가? 내가 아는 한, 액세스 토큰은 요청 헤더 내부의 웹 서비스에서 설정됩니다.

      참고 : Yii2 고급 앱 을 사용하고 있습니다. 도와주세요.

  • +0

    exacly가 작동하지 않는 이유는 무엇입니까? 당신이 액세스 토큰을 사용하지 않을 경우 HttpBearerAuth 동작을 구현합니다. 올바르게 구현 된 경우 Yii :: $ app-> user – Tim

    +0

    으로 인증 된 사용자에게 액세스 할 수 있습니다. 액세스 토큰 유효성 검사에 어떤 인증 동작을 사용해야하는지 혼란 스럽습니다. –

    답변

    6

    간단한 대답이 동작을 구현하는 데는 여러 가지 가능성이 있습니다.

    HttpBearerAuthHttpBasicAuth 모두 올바르게 구성된 경우 findIdentityByAccessToken() 방법을 사용할 수 있습니다. 사용해야하는 동작은 사용자가 자신을 인증하도록하려는 방식에 따라 다릅니다. 당신이 HttpBasisAuthHttpBasicAuth의 문서를 읽으면

    당신은 HttpBasicAuth의 기본 구현은 사용자 응용 프로그램 구성 요소의 loginByAccessToken() 메소드를 사용하여 사용자 이름 만 전달

    볼 수 있습니다. 이 구현은 API 클라이언트를 인증하는 데 사용됩니다.

    loginByAccesToken 당신은 auth attribute를 볼 속성 정식으로 클로저를 정의하여이 동작을 조작 할 수 있습니다 findIdentityByAccesToken 메도를 호출합니다.

    HttpBeareAuth 거의 동일합니다. 그것은 또한 구현합니다 loginByAccessToken

    그래서 서로를 어떻게 다릅니 까? 간단한 어디에서 데이터를 얻을 위치.

    HttpBearerAuth 헤더가 그래서 솔루션을 사용합니다 다음 header('Authorization: Bearer '. $token);

    로 정의되는 것을 기대 : 어디 HttpBasicAuth 클라이언트가 기본 헤더 예 header('Authorization: Basic '. base64_encode("user:password"));를 설정 한 것으로 예상 (http://php.net/manual/en/features.http-auth.php를 PHP 볼이 지원 구축이) 사용자/클라이언트가 스스로를 인증하는 방식에 달려 있습니다.는 GET PARAM이 queryparamauth

    를 볼 당신은 또한 자신이 오순절 인증하기 위해 사용자에게 가능성을주는 QueryParamAuth을 사용할 수 있습니다 그리고 당신은 사용하려면 사용자 정의 헤더의이 X-API-토큰이 AuthMethod를 구현하는 사용자 정의 클래스를 만들 가정 해 봅시다 인터페이스 참조 AuthMethod

    희망이 도움이