Asp.net

asp.net“記住我”不再使用表單身份驗證

  • February 7, 2013

我有兩個具有自寫成員資格提供程序的網站,它們在不同 Web 應用程序和不同應用程序池中的同一 Web 中的同一台伺服器上託管。

以前我遇到的問題是我無法同時登錄兩個站點。感謝 Remy 的文章,現在可以使用了,我必須將name-attribute 添加到forms元素中。

但是現在我遇到了 asp login-control 的記住我選項停止工作的問題。使用者在正常會話超時後註銷。

web.config 文件中的身份驗證屬性如下所示:

<authentication mode="Forms" >
 <forms loginUrl="~/UserMgmt/Login.aspx" timeout="400000" slidingExpiration="true" name="NameOfTheSite"/>
</authentication>

我也將表單身份驗證的 cookie 名稱設置為不同的名稱。

還有什麼我必須添加的,以便記住我的功能起作用嗎?

更新

我觀察到,如果我禁用表單身份驗證cookie的加密和驗證,問題就消失了。如果我啟動加密、驗證或兩者都啟動,則新出現問題。

我也知道,它獨立於會話 cookie 名稱(它們甚至可以是相同的)。也許這些資訊可以幫助某人弄清楚發生了什麼?

更新 1

感謝 Jason Kealey 解決此問題。我永遠不會找到它。同時我在msdn中找到了相應的資訊。在 “如何:在 ASP.NET 2.0 中配置 MachineKey”部分的“Web Farm 部署注意事項”中寫道:

如果要將您的應用程序與同一伺服器上的其他應用程序隔離開來,請將<machineKey>伺服器場中每個伺服器上每個應用程序的 Web.config 文件放置在該文件中。確保為每個應用程序使用單獨的鍵值,但在場中的所有伺服器上複製每個應用程序的鍵。

問題可能是您擁有每次啟動工作程序時自動生成的驗證密鑰。cookie 是加密的,但是當您返回時使用了新的伺服器端密鑰,因此您的 cookie 無法解密。

查看 machineKey 部分 http://msdn.microsoft.com/en-us/library/ff649308.aspx

這是將為您生成 machineKey 部分的內容 http://www.qualitydata.com/products/aspnet-membership/help/configuration/no-machinekey.aspx

嘗試設置域名以確保記住的cookie在所有情況下都正確設置

<forms  path="/" domain="nameof.com" ...the rest

引用自:https://stackoverflow.com/questions/4728036