asp.net“記住我”不再使用表單身份驗證
我有兩個具有自寫成員資格提供程序的網站,它們在不同 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