我在查找應用程序中的API用戶身份驗證方法時遇到問題。我開始着手構建一個系統,用戶可以通過Web訪問和驗證身份,但需求發生了變化,我需要實施一些額外的操作,這些操作可以使用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用戶和Web用戶的認證?
是的我已經從那個教程中收集了一些代碼,它幾乎是唯一解釋Yii中的REST API的方法,並且每個人都引用了它。問題仍然是,我強制訪客登錄的CBehavior的擴展將覆蓋此API控制器中的任何內容,因爲它在它之前執行。 –
而不是使用行爲重定向到登錄我使用LoginRequiredController由所有需要登錄的控制器繼承。如果你這樣做,至少可以解決這個問題。用於REST的APIController不會從那個繼承。 – Mikt25
優秀!這是完美的。如果您可以更新您的答案,我會將其標記爲已接受。 –