내 애플리케이션에서 API 사용자를 인증하는 방법을 찾는 데 문제가 있습니다. 사용자가 웹을 통해 액세스하고 인증 할 수있는 시스템을 처음 만들었지 만 요구 사항이 변경되어 POST API 호출을 사용하여 RESTful 방식으로 사용할 수있는 몇 가지 추가 작업을 구현해야합니다.Yii RESTful 인증
CBehaviour
확장 클래스를 만들고 모든 인증되지 않은 사용자 (found on the yii framework forum here)의 로그인 페이지로 리디렉션하도록했습니다. 문제는 모든 API 호출이 동일한 로직을 통해 강제되고 모든 POST 요청이 HTML을 로그인 페이지로 뱉어 버리는 것입니다.
class ApplicationBehavior extends CBehavior {
private $_owner;
public function events() {
return array(
'onBeginRequest' => 'forceGuestLogin',
);
}
public function forceGuestLogin() {
$owner = $this->getOwner();
if ($owner->user->getIsGuest())
$owner->catchAllRequest = array("site/login");
}
}
웹 사용자로부터 API 사용자 인증을 분리하는 방법은 무엇입니까?
예 이미 튜토리얼의 일부 코드를 모았습니다. Yii의 REST API를 설명하는 유일한 코드이며, 누구나 참조 할 수 있습니다. 문제는 여전히 Guest 로그인을 강제하는 내 CBehavior의 확장이이 API 컨트롤러에서 실행되기 때문에이 API 컨트롤러의 모든 내용을 재정의한다는 의미입니다. –
로그인으로 리디렉션하는 동작을 사용하는 대신 로그인이 필요한 모든 컨트롤러에서 상속되는 LoginRequiredController를 사용합니다. 이런 식으로하면 적어도 그 문제를 해결할 수 있습니다. APIController for REST는 그 것을 상속받지 않습니다. – Mikt25
우수! 그건 완벽하게 작동합니다. 답변을 업데이트 할 수있는 경우 승인 된 것으로 표시됩니다. –