asp.net'记住我'不再使用表单身份验证了

时间:2011-01-18 19:15:04

标签: asp.net asp.net-membership forms-authentication

我有两个网站,其中包含自编写的成员资格提供程序,它们位于不同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文件中。确保为每个应用程序使用单独的键值,但在服务器场中的所有服务器上复制每个应用程序的键。

3 个答案:

答案 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分钟。 要改变这个:

  1. 打开IIS管理器。
  2. 右键单击您的站点并选择 属性。
  3. 选择ASP.NET选项卡,然后单击 编辑配置。
  4. 选择“身份验证”标签。
  5. 选择启用滑动过期。
  6. 将Cookie超时设置为更长时间 值。设置为30 天,输入    30.00:00:00
  7. 单击“确定”并退出IIS管理器。
  8. enter image description here