我正在建立一个新网站,一个 friend 建议我使用asp.net成员身份进行身份验证过程(登录,注册,密码恢复等)。

我看到所有内容都存储在XML文件中。

我想知道使用成员资格而不是从头开始构建东西的利弊是什么。

最佳答案

MS登录解决方案包括几个部分。

身份验证-“谁可以访问您的网站”

表单例份验证-这基本上会创建一个安全的cookie,上面写着“我已通过身份验证!”。根据每个请求。没有这个,用户将不得不登录每个页面。

  • 优点:效果不错
  • 缺点:无-使用

  • 成员身份-这是存储用户及其密码以及验证用户凭据的方式。有几种方法可以解决此问题:
  • 使用SqlMembershipProvider-Microsoft为您提供了一个数据库来安全地存储用户/密码,并为您提供了一种对凭据进行身份验证的方法。
  • 优点:
  • 更少/无需维护自定义代码。作品“开箱即用”
  • 与成员资格控件和API一起使用
  • 缺点:
  • 您必须使用Sql Server并使用其数据库架构。 (不是IMO的问题)
  • 无法控制最初如何生成密码。它们又长又丑
  • 熟悉技术
  • 时,学习过程会更陡峭
  • 创建自定义MembershipProvider-您可以从MembershipProvider继承以自定义存储数据的位置和方式。
  • 优点:
  • 您可以免费获得
  • 的密码加密/解密
  • 控制用户的存储位置以及数据的外观
  • 您仍然可以使用成员资格控件和API
  • 缺点:
  • 必须实现自己的存储解决方案
  • 您必须编写,调试和维护很多自定义代码
  • 如果添加其他功能,则必须强制提供程序使用它
  • 创建您自己的身份验证方案
  • 优点:完全控制
  • 缺点:
  • 您可以创建所有内容,但必须调试/维护所有内容。
  • 您必须自己控制凭据的安全性。
  • 无法使用成员资格控件(这不是很大的损失,因为控件很容易复制)
  • 无法使用成员(member)API

  • 授权-“用户可以做什么?”

    角色-角色控制用户可以通过authorization mechanism provided by the web.config执行的操作,还可以对站点 map 进行安全修整。
  • 使用SqlRoleProvider-Microsoft为您提供了一个数据库来存储角色
  • 优点:
  • 与web.config一起使用
  • 您可以为用户
  • 分配多个角色
  • 缺点:
  • 角色只是一个字符串,不支持“权限层次结构”。这会使创建用户可以编辑其他用户的规则变得困难。
  • 创建自定义RoleProvider-您可以从RoleProvider继承以自定义存储数据的位置和方式。
  • 优点:与web.config一起使用
  • 缺点:
  • 必须实现自己的存储解决方案
  • 仍然只是一个字符串,与前面的解决方案
  • 一样受限制
  • 如果执行不正确,它可能会执行许多数据库调用。
  • 创建您自己的身份验证方案
  • 优点:完全控制-只需对页面进行自定义检查,并根据需要进行错误/重定向
  • 缺点:
  • 与web.config / sitemap提供的授权机制不兼容。实际上,这意味着将页面添加到文件夹(例如/ Admin)不再保证该页面的安全性。


  • 重要的是要注意,可以独立选择或自定义成员资格和角色提供程序。如果可以的话,我个人建议使用SqlMembershipProvider并评估Role Provider的选项。

    关于c# - 使用asp.net成员资格的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4255583/

    10-12 01:20
    查看更多