Asp.net mvc 如何取消某人';如果他们的成员资格不再有效,他们的持久cookie?

Asp.net mvc 如何取消某人';如果他们的成员资格不再有效,他们的持久cookie?,asp.net-mvc,asp.net-mvc-3,cookies,asp.net-membership,Asp.net Mvc,Asp.net Mvc 3,Cookies,Asp.net Membership,我正在为一家俱乐部设计一个小型ASP.NETMVC网站。一般来说,我希望用户能够保持登录状态,但如果用户的会员资格已过期,会发生什么情况?有没有办法“取消授权”他们,以便下次他们尝试查看页面时,它会将他们重定向到一个页面,告诉他们他们的成员资格已过期?如果达到为身份验证cookie定义的超时,它将不再有效,用户将自动重定向到登录页面。如果您想在某些情况下自动注销,您可以简单地: FormsAuthentication.SignOut(); 当您从cookie中获取用户信息时,您可以添加一个检查

我正在为一家俱乐部设计一个小型ASP.NETMVC网站。一般来说,我希望用户能够保持登录状态,但如果用户的会员资格已过期,会发生什么情况?有没有办法“取消授权”他们,以便下次他们尝试查看页面时,它会将他们重定向到一个页面,告诉他们他们的成员资格已过期?

如果达到为身份验证cookie定义的超时,它将不再有效,用户将自动重定向到登录页面。如果您想在某些情况下自动注销,您可以简单地:

FormsAuthentication.SignOut();

当您从cookie中获取用户信息时,您可以添加一个检查,查看其成员资格是否已过期,并将其重定向到该页面。

为什么不设置身份验证cookie的过期日期、您想要的天数或其成员资格的过期日期,以较早者为准,然后你会得到自动处理的好处

谢谢,达林。仅仅依靠超时并不是一个理想的解决方案,因为我想让用户至少在正常情况下登录几天。至于
SignOut()
方法,我对此很熟悉(这是请求注销页面时发生的情况),但我认为要正确维护安全性,我需要检查每个控制器的每个方法中的用户的有效凭据。这意味着我不会从内置授权中获益。@DanM,在操作过滤器中这样做如何,这样你就不必在每个操作中重复它了?Darin,我以前没有使用过操作过滤器,但我会研究一下。谢谢。事实证明,ActionFilter是正确的解决方案。谢谢你的帮助!Briguy,但我没有任何代码可以检查cookie。我相信这一切都是由ASP.NET自动完成的。有什么方法可以覆盖通常的行为并添加此检查?对不起,我对ASP.NET不太熟悉,所以我不确定。我认为有一种方法可以添加一个在应用程序中显示每个页面之前运行的安全过滤器,但我不知道如何进行设置……在登录时,您只需使用FormsAuthenticationTicket,手动设置cookie,而不是现在使用FormsAuthentication.setAuthCookie,数据库中没有成员过期的规范。业务规则基本上是,非付费会员最终会被标记为非活动会员,但这是一个手动过程。在任何情况下,+1表示一个聪明的想法,我可以看到添加一个失效日期作为一个新特性。