使所有表单身份验证Cookie失效

时间:2010-09-25 01:32:53

标签: asp.net forms authentication

我有一个大约有10名成员的小网站。其中5个现已被禁止。

我确保他们无法通过登录页面登录。

但是,由于身份验证cookie是持久性的,并且如果他们返回到网站几个月后设置为过期,他们仍然会登录。

一个简单的解决方案就是使所有身份验证票证/ cookie过期。

怎么做?

4 个答案:

答案 0 :(得分:4)

如果您对所有用户的Cookie失效感到满意,那么您可以在web.config中重命名表单身份验证Cookie,如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" name=".ASPXAUTH2"/>
</authentication>

这将强制所有用户再次登录 - 然后您可以使用上述技术确保您的被禁用户不被允许登录。

注意,默认cookie名称是.ASPXAUTH。上面的代码将其重命名为.ASPXAUTH2。我能用这种方法想到的唯一问题是,如果你有一些专门寻找.ASPXAUTH cookie的代码。

答案 1 :(得分:3)

Cookie适用于身份验证而不是用于授权。

来自维基百科

  

有时会认为授权过程与身份验证相同;许多广泛采用的标准安全协议,强制性法规甚至法规都会导致此错误。但是,身份验证是验证主体声称应该允许其代表给定主体(人员,计算机,进程等)行事的过程。另一方面,授权涉及验证经过身份验证的主体是否有权执行某些操作或访问特定资源。因此,身份验证必须先于授权。

如果您使用的是表单身份验证,那么Rob的答案是可行的方法。否则,您可能需要手动实施

当然,他们仍然可以被识别为用户(被禁止但是用户)但仍然不应该让他们进入。

as azamsharp发布了。必须有一种方法可以告诉用户数据库中禁止的用户,而不是让他们登录。

然后,被禁用的用户仍然可以通过身份验证(在他们发送正确的用户和密码之后)但未经授权(在被检测为被禁用之后)。

答案 2 :(得分:2)

您可以在数据库中添加名为IsBanned的字段。当用户被禁止时IsBanned是真的。如果IsBanned为true,则表示您不允许用户访问该网站。

答案 3 :(得分:0)

由于您使用的是表单身份验证,因此可以使用Web配置中的授权设置:

<system.web>
    <authorization>
      <deny users="user1,user2,user3"/>
    </authorization>
</system.web>

或者如果您使用角色提供程序,则可以执行

<system.web>
    <authorization>
      <deny roles="banned"/>
    </authorization>
</system.web>