2012-05-29 67 views
0

我在cakephp文檔中遵循了認證教程,並創建了一個工作登錄系統。CakePHP Auth.redirect沒有被寫入

我想要做的一件事就是將用戶重定向到他們在完成登錄後未嘗試登錄時嘗試訪問的操作。

我相信他們訪問的頁面應該由Auth組件中的啓動函數在會話中寫入Auth.redirect,但是這似乎不起作用。試圖訪問編輯動作,我自動重定向到登錄操作時

$this->Auth->allow('add', 'login'); 

因此:

在我的用戶控制器我已經添加了以下到beforefilter。

在登錄動作,我已經包括:

debug($this->Session->read()); 
debug($this->referer()); 

這是輸出的會話信息,並在本次會議沒有Auth.redirect提及所以無論是驗證功能或自己無法用這個來重定向用戶。

我試過使用$ this-> referer,但由於某些原因,當由auth函數自動重定向時,引用者也未被跟蹤。

有誰知道爲什麼auth.redirect可能不會被寫入一個原因,爲什麼$這個 - >引用者沒有被當通過身份驗證功能重定向填充?

我必須注意我在使用WAMP的Windows機器上。然而,我的添加動作重定向到成功和調試後登錄($ this-> referer());在發生這種情況時選擇重定向URL,因此標頭必須正常工作。

其它注意事項:

我已經通過存儲在數據庫中的會話標識尋找與CakePHP的問題。

看來,auth.redirect存儲在會話中,但是出於某種原因,當用戶被重定向清除以前的數據,生成一個新的會話。

無論如何阻止CakePHP爲用戶創建新的會話ID?

+1

loginRedirect設置爲null(應該是默認的,所以你修改了那個?)另外,在你被重定向到登錄動作後'env('HTTP_REFERER')'的輸出是什麼 – tigrang

+0

@tigrang我試過了設置和取消設置loginRedirect,而不會影響寫入的Auth.redirect。 env('HTTP_REFERER')空白。 – Alex

+1

'$ _SERVER'和'$ _ENV'是否爲空?看看你的php.ini或'phpinfo()','variables_order'的值是什麼? – tigrang

回答

0

我發現auth.redirect不工作的原因。

我在core.php中設置自定義會話cookie的名字,由於某種原因,會話組件不使用自定義cookie名工作以及因此產生的每一頁上一個新的會話。

如果遇到與會議的問題,你有一個自定義會話cookie名稱,重置爲默認值,它會工作。

我將把這個作爲bug提交給CakePHP。

還注意到

我確定這個問題是因爲一個存在的。在cookie名稱中,沒有這個。自定義Cookie名稱的執行情況應該如此。