2017-03-13 2 views
1

현재 yii2 기반의 나머지 API에서 작업 중입니다. 나는 사용자 authentication.let에 대한 무기명 토큰을 사용하여 요구 사항을 설명합니다.Yii2 나머지 Api 사용자 무기명 인증 만료 시간

1) 첫 번째 사용자는 자격 증명을 사용하여 외부 PHP 응용 프로그램에서 인증됩니다.

2) 액세스 토큰이 있습니다.

3) 이후의 요청은이 액세스 토큰을 사용하여 수행됩니다.

public static function findIdentityByAccessToken($token, $type = null) 
{ 
    return static::findOne(['auth_key' => $token]); 
} 

여기가 내가 생각하기 시작한 곳입니다. 액세스 토큰의 만료 시간을 찾지 못했습니다. 정말 필요한가요? 그렇다면 어떻게 보관할 수 있습니까? 미리 감사드립니다.

+0

로의 이행에 유효 내가 아는 한 Yii는 기본적으로 인증 토큰 만료 시간을 갖지 않습니다. 우리는 외부 적으로 구현해야합니다. 제가 틀렸다면 제게 정정하십시오. 도움이 될만한이 링크를 참조하십시오 - http://stackoverflow.com/questions/25327476/implementing-an-restful-api-authentication-using-tokens-yii-yii2 –

+0

나는 해냈다. JWT가 잘 작동한다는 것을 발견했습니다. 당신은 토큰에서 타임 아웃을 정의 할 수 있고, 그래서 서명을 할 수있다. –

답변

2

귀하의 질문은 종류가 다양하지만 귀하의 생각 과정을 도와 드리겠습니다.

액세스 토큰의 만료 시간을 찾을 수 없습니다. 정말 필요한가요?

요구 사항에 따라 다릅니다. 처음으로 인증 한 후 사용자가 API에 무기한으로 액세스 할 수있게 하시겠습니까? 사용자가 매번 토큰을 갱신하도록 하시겠습니까?

침입자가 손상된 액세스 토큰을 사용할 수있는 시간을 제한하므로 후자를 권장합니다.

그렇다면 어떻게 보관할 수 있습니까?

하나의 옵션이 어떠했는지를 확인하기 위해 신원 클래스 및 해당 데이터베이스 테이블에 유효 기간의 날짜를 포함하는 필드를 추가하는 것입니다 여전히 findIdentityByAccessToken()

public static function findIdentityByAccessToken($token, $type = null) 
{ 
    return static::findOne([ 
     'AND', 
     ['auth_key' => $token], 
     ['>=', 'token_expire', new \yii\db\Expression('NOW()')] 
    ]); 
}