在没有提供程序的情况下在ASP.NET MVC中验证用户的简单方法

时间:2012-04-23 02:22:04

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

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

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

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

  • 用户名应加密吗?
  • 如果有多台服务器并且用户在浏览网站时会发生什么?我相信任何一台服务器都可以为用户提供内容,那么他​​们如何知道用户是否已经过身份验证?
  • 在没有提供商的情况下,在MVC中验证用户的首选方法是什么?我是在正确的轨道还是我应该研究其他什么?

1 个答案:

答案 0 :(得分:3)

  

用户名是否应加密?

没有

  

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

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

  

在没有使用MVC的情况下验证用户的首选方法是什么   供应商?我是在正确的轨道还是我应该调查   别的什么?

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

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