我知道這個主題有很多問題,但據我瞭解,應該有一個錯誤修正。所以我認爲我的問題必須是一個不同的問題,因爲我使用CakePHP 2.5.6,它應該有錯誤修正,正確的?CakePHP身份驗證:註銷重定向錯誤和雙重網址基地
那麼,我正在嘗試將「簡單身份驗證和授權應用程序」改編爲我的項目。只要我不添加行 'authorize'=>數組('Controller') 我可以添加用戶,登錄,註銷和登錄和註銷重定向工作正常。
只要我補充該行的應用程序的行爲怪異: 1.登錄和登錄重定向工作 2.用戶/註銷導致過一個缺少 - 控制器 - 錯誤的,因爲它調用雙基的URL。它還調用登錄重定向的重定向url,而不是註銷重定向。當我致電/用戶/註銷應用程序試圖存取權限本地主機/ project_xyz/project_xyz /測試
的AppController:
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'tests',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'pages',
'action' => 'display','home'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
),
'authorize' => array('Controller'),
)
);
public function isAuthorized($user) {
// Admin can access every action
if (isset($user['role']) && $user['role'] === 'admin') {
return true;
}
// Default deny
return false;
}
public function beforeFilter() {
$this->Auth->allow('display');
}
}
有人能幫忙嗎?
[編輯:]
我已將此添加到組件陣列:
'unauthorizedRedirect' => [
'controller' => 'users',
'action' => 'login',
'prefix' => false ]
的效果是,當我現在請用戶/註銷,而不是以前的缺控制器誤差,我將被重定向到用戶/登錄。不幸的是用戶還沒有註銷。我仍然可以訪問一切,如果用戶在仍處於登錄
[編輯#2:]。
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
public function logout() {
return $this->redirect($this->Auth->logout());
}
升級到最新的2.6.x穩定版本。 IIRC有一個與重定向有關的錯誤已修復。 – ADmad
我做了升級到2.6.1。同樣的錯誤。 – Doena
我剛剛嘗試過:在AppController的beforeFilter中放入allow - >'logout'。 $這 - > Auth->允許( '顯示', '退出'); 現在至少註銷工作。不幸的是,還有其他重定向問題:當我登錄時,我登錄,但重定向在第一次不起作用。即使我現在可以訪問保護區,但如果我第二次提交用戶憑據,我將只會被重定向。 – Doena