2012-09-04 51 views
0

我在FuelPHP的SimpleAuth登錄中顯然只有IE瀏覽器問題。它在本地主機上正常工作,但在正在工作的站點的分期版本上,登錄後Auth::check()總是失敗。FuelPHP SimpleAuth登錄無法在IE中工作

如果我倒在登錄表單驗證Auth::check()內容,我得到true,提示用戶已經登錄成功。然而,當我將用戶重定向到下一個頁面(使用Response::redirect),Auth::check()評估板作爲false。我不認爲問題與重定向直接相關,因爲即使我不重定向用戶,登錄仍然失敗。

由於某種原因,這個問題似乎只發生在IE瀏覽器(包括8和9)。在Opera,Firefox等中,用戶登錄和註銷工作正常。正如我之前所說,它也適用於本地開發版本的IE。我只能認爲它必須是一些cookie或會話處理問題,但我無法弄清楚問題所在。如果有人能夠對此有所瞭解,我將非常感激!

我使用FuelPHP 1.1版

+0

當用戶成功登錄後,我相信會設置一個Session變量。啓用分析器並查看IE和FF以查看發生了什麼。 –

+0

好的。不要拖延:分析器似乎不想在IE8中工作。但在IE9中:沒有會話變量。在FF和Opera中,加載了2個會話變量(用戶名和login_hash)。 –

+0

檢查是否在IE中啓用了Cookies。 –

回答

2

我一直堆放在同一個問題整天,終於,我解決了這個問題。

就我而言,問題出在Safari/Mac上,每次登錄後會話都會被終止。實際上,這是因爲我使用ajax調用(在服務器上有相對路徑)來登錄我的用戶,顯然ajax調用發送一個與http調用不同的用戶代理,並且不匹配導致Fuel終止會話。

我使用的解決方案是在會話配置中禁用match_ua值。 爲了使事情更安全,我改用match_ip。我不知道這是否是好的解決方案。

我仍然不知道爲什麼用戶代理會有所不同。如果有人能讓我更清楚這個問題,非常感謝。