簡體   English   中英

“記住我”不在服務器上工作

[英]“Remember Me” not working on server

我正在實現“記住我”功能,我希望用戶不必再次輸入登錄名/密碼。

它似乎在本地工作,但在共享主機中,它持續約15分鍾然后注銷。 這是代碼:

控制器

FormsAuthentication.SetAuthCookie("username", true);

Web.config

<authentication mode="Forms" >
    <forms loginUrl="~/Account/LogOn" timeout="262974" cookieless="UseCookies" />
</authentication>
<sessionState mode="InProc" timeout="262974" cookieless="UseCookies" />

編輯

我添加了sessionState,但仍然是同樣的問題,在本地而不是在服務器上工作

我錯過了什么?

查看web.config中的sessionstate元素。 例如:

<sessionState mode="InProc" timeout="60" />

查看以下SO問題,了解session.ate元素與web.config中表單元素之間的差異表單auth超時和會話超時的差異

@womp 接受的答案如下:

每當新用戶訪問網站時,會話就會開始,無論他們是否是匿名用戶。 身份驗證與Session幾乎沒有關系。

身份驗證超時是身份驗證cookie在用戶瀏覽器上有用的時間。 一旦cookie過期,他們必須重新進行身份驗證才能訪問站點上受保護的資源。

因此,如果Session在Authentication cookie之前超時 - 它們仍然經過身份驗證,但是它們的所有會話變量都會消失,並且如果您在檢查由於缺少會話而導致的空值和其他條件時沒有遵守規則,則可能會導致您的網站出錯。

如果身份驗證在會話之前超時,則其所有會話變量仍將存在,但在重新登錄之前,它們將無法訪問受保護的資源。

我終於找到了解決方案,我不得不使用StateServer而不是InProc以及機器密鑰,這是完整的解決方案:

控制器:

FormsAuthentication.SetAuthCookie("username", true);

Web.config文件:

<authentication mode="Forms" >
    <forms loginUrl="~/Account/LogOn" timeout="262974" cookieless="UseCookies" />
</authentication>

<sessionState mode="StateServer" timeout="262974" cookieless="UseCookies" />

<machineKey validationKey="5BAE63F50C69C1BBB7BFC2E696674389C307E28E9DEB60FB273B85CAD8FC3C2261FB13DF92B90A99C6EB684FDB1F6E3E92E1A42083EB77B5918126DD52245FB5" decryptionKey="11F6FE0C790413FFF3E230387168016B212216DEF727C4157CDDD0558BEAE5B7" validation="SHA1" decryption="AES" />

我與Arvixe共享托管,並且在我們找到解決方案的支持中: support.arvixe.com

轉到:ASP.NET設置並滾動到會話設置將“值”無更改為“表單”它將完成! 轉到身份驗證模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM