4

我正在尝试为 MVC 站点实现一个非常基本的 Asp.net 表单身份验证机制。我遇到的问题是我的身份验证 cookie 被设置为一年后过期,而我不希望它在这么长时间后过期。这是我的一些代码:

网络配置

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2" />
</authentication>

控制器

...
FormsAuthentication.SetAuthCookie(username, false);
...

我找到了这个答案(这个问题很相似,但在我的情况下永远不会发生超时)但这是使 cookie 过期的唯一方法还是我在这里做错了什么?

当我查看 cookie 时,它​​设置为一年后过期,即使它应该在几分钟后过期,为什么?

我想要的是用户在一段时间后以某种方式注销,我认为在forms标签中设置过期就可以了?

4

1 回答 1

10

在我找到解决方案后,将近一个月,100 次观看和没有答案。

首先,web.config只有当cookie被设置为持久性时才起作用,即持久性cookie也可以过期。最初我错误地认为持久性 cookie 不会过期。事实上,如果我总是将 cookie 设置为持久化,那么我的原始代码会起作用。

其次,我认为会员资格提供者无需按照上述评论中的建议使表单身份验证工作。

以下是我现在创建身份验证 cookie 的方法:

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, isPersistent);
if (!isPersistent)
{
    //this is because if it was not set then it got 
    //automatically set to expire next year even if 
    //the cookie was not set as persistent
    authCookie.Expires = DateTime.Now.AddMinutes(15);
}

Response.Cookies.Add(authCookie); 

请让我知道是否有任何替代方案?

于 2013-11-06T19:30:44.627 回答