【问题标题】:Simple way to authenticate users in ASP.NET MVC without providers在没有提供程序的情况下在 ASP.NET MVC 中对用户进行身份验证的简单方法
【发布时间】:2012-05-03 16:23:36
【问题描述】:

我试图了解 ASP.NET MVC 中的身份验证是如何工作的。我不希望内置的 MembershipProvider 在幕后创建本地数据库。我还查看了一些关于自定义会员提供程序的博客文章。在寻找更简单的表单身份验证模型时,我发现了以下内容:

FormsAuthentication.SetAuthCookie("myusername", true);
FormsAuthentication.SignOut();

这个想法是将用户名和加盐哈希密码发送到数据库,看看它们是否匹配那里的记录。如果用户存在,那么我将用户名传递给 SethAuthCookie。我的问题是:

  • 是否应加密用户名?
  • 如果有多个服务器并且用户正在浏览网站会怎样?我相信任何一台服务器都可以向用户提供内容,那么它们如何知道用户是否已通过身份验证?
  • 在没有提供程序的情况下,在 MVC 中验证用户的首选方式是什么?我是在正确的轨道上还是应该寻找其他东西?

【问题讨论】:

    标签: asp.net-mvc cookies forms-authentication


    【解决方案1】:

    用户名是否应该加密?

    没有。

    如果有多个服务器并且用户正在浏览 网站?我相信任何一台服务器都可以向 用户,那么他们如何知道用户是否已通过身份验证?

    在每次请求时,服务器都会读取客户端浏览器发送并由FormsAuthentication.SetAuthCookie 调用生成的身份验证cookie,对其进行解密并检索存储在其中的用户名。只需确保您为服务器场的所有节点设置了相同的机器密钥,这样无论哪个节点发出身份验证 cookie,所有其他节点都可以解密它。

    在 MVC 中验证用户的首选方式是什么? 供应商?我是在正确的轨道上还是应该调查 还有什么?

    你在正确的轨道上。一旦您验证密码哈希与数据库中的用户之一匹配,您就可以使用FormsAuthentication.SetAuthCookie 方法发出身份验证cookie,并且在后续操作中,您可以使用User.Identity.Name 属性来检索当前经过身份验证的用户。

    我还建议您查看following article,它很好地概述了表单身份验证在 ASP.NET 中的工作原理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多