我有两个网站,其中包含自编写的成员资格提供程序,它们位于不同Web应用程序和不同应用程序池中同一Web中的同一服务器上。
以前我遇到了问题,我无法一起登录这两个网站。感谢Remy的post,现在可以使用,我必须将name
- 属性添加到forms
元素。
但是现在我遇到了asp登录控件的remember-me选项停止工作的问题。正常会话超时后,用户将被注销。
web.config文件中的authentication-attributes如下所示:
<authentication mode="Forms" >
<forms loginUrl="~/UserMgmt/Login.aspx" timeout="400000" slidingExpiration="true" name="NameOfTheSite"/>
</authentication>
我还将表单认证的cookie名称设置为不同的名称。
我还需要添加其他内容,以便记住我的功能吗?
更新
我观察到如果我禁用表单身份验证cookie的加密和验证,问题就消失了。如果我激活加密,验证或同时激活,则问题会重新出现
我也知道,它独立于会话cookie名称(它们甚至可能是相同的)。也许这些信息可以帮助某人弄清楚发生了什么?
更新1
感谢Jason Kealey解决这个问题。我永远都找不到它。
与此同时,我在msdn中找到了相应的信息。在
How To: Configure MachineKey in ASP.NET 2.0
在“Web场部署注意事项”一节中写道:
如果要将应用程序与同一服务器上的其他应用程序隔离,请将<machineKey>
放在服务器场中每台服务器上的每个应用程序的Web.config文件中。确保为每个应用程序使用单独的键值,但在服务器场中的所有服务器上复制每个应用程序的键。
答案 0 :(得分:9)
问题可能是您每次启动工作进程时都会自动生成验证密钥。 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
答案 1 :(得分:2)
尝试设置域名以确保在所有情况下都正确设置了记住的Cookie
<forms path="/" domain="nameof.com" ...the rest
答案 2 :(得分:0)
Cookie超时也受IIS限制,默认为20分钟。 要改变这个: