为什么在重新启动dev之后User.Identity.IsAuthenticated等于true。服务器?

时间:2015-05-05 12:55:33

标签: asp.net authentication

我认为authenticaton的内部机制应该使用令牌设置cookie并在服务器上存储相同的令牌,然后在每个请求上比较来自cookie和服务器的令牌,如果它们相等则用户登录我不知道服务器在哪里存储令牌,可能在Session或其他东西(不是持久的),但我确信在服务器重新启动服务器的令牌后#39 ; s商店应该被清理,因此具有旧cookie的用户无法进行身份验证。但是在我重启服务器之后的一个实践中,用户仍然经过身份验证并且可以访问页面,因为User.Identity.IsAuthenticated返回true。在我看来错了。即使我从我的数据库中删除此用户(我使用成员资格),因为我不希望此用户再次访问并重新启动我的服务器,该用户仍然经过身份验证。谁能解释一下呢?

1 个答案:

答案 0 :(得分:3)

Source 的回答

以下是身份验证过程的工作原理。

  
      
  • 您在web.config中设置了一些内容,包括登录页面所在的位置,登录有多长时间以及是否使用滑动
      到期(如果用户在您的帐户上处于活动状态,则应该延长时间   位点)
  •   
  • 用户访问您的网站,输入用户名和密码。
  •   
  • 该信息已发布到您的服务器。您获取该信息,验证它是否正确(验证)。如果是   正确的是,服务器然后发出一个称为
    的加密cookie   FormsAuthenticationTicket注意 - 这可能在
    中有不同的名称   新的身份,但原则相同。
  •   
  • Cookie的内容包括用户名和登录的截止日期等项目。
  •   
  • 在每个请求中,服务器查看cookie集合以获取身份验证cookie。如果找到,它会解密它,读取值和   确定这是否仍然是有效的cookie(到期时间)。一旦它   有来自cookie的用户信息,服务器可以使用这个   确定用户是否获得资源授权的信息
      请求(按用户名查找)。
  •   
  • 如果cookie不存在,或已过期,或者当用户注销时,cookie将从cookie集合中删除。现在,如果用户尝试转到仅供授权用户使用的资源,则会将用户重定向回登录页面。
  •   

希望这有帮助。