使用asp.net会员有什么优点和缺点?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)

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

我看到一切都存储在一个XML文件中。

我想知道使用会员有什么优点和缺点,而不是从头开始构建。

提问于
用户回答回答于

MS登录解决方案由多个部分组成。

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

表单身份验证 - 这基本上创建一个安全的cookie,说:“我认证!” 在每一个请求。没有这个,用户将不得不登录每一个页面。

  • 优点:这很好
  • 缺点:无 - 使用它

成员资格 - 这是存储用户和密码的方式,并验证用户凭据。有几种方法可以解决这个问题:

  1. 使用SqlMembershipProvider - Microsoft提供了一个安全地存储用户/密码的数据库,并提供了一种验证凭据的方法。
    • 优点:
      • 减少/不需要自定义代码来维护。“开箱即用”
      • 适用于会员控制和API

    • 缺点:
      • 你必须使用Sql Server并使用他们的数据库模式。(不是海事组织的问题)
      • 无法控制最初生成密码的方式。他们长而丑陋
      • 熟悉该技术时,学习曲线更陡峭

  2. 创建自定义MembershipProvider - 可以继承MembershipProvider以自定义存储数据的位置和方式。
    • 优点:
      • 可以免费获得密码的加密/解密
      • 控制存储用户的位置以及数据的外观
      • 仍然可以使用Membership控件和API

    • 缺点:
      • 必须实施自己的存储解决方案
      • 必须编写,调试和维护大量自定义代码
      • 如果添加其他功能,则必须投射提供商才能使用它

  3. 创建自己的认证方案
    • 优点:完全控制
    • 缺点:
      • 你创造了一切,但必须调试/维护一切。
      • 你必须自己控制凭证的安全性。
      • 不能使用会员控制(这不是一个大的损失,因为这些控件非常容易复制)
      • 无法使用Membership API

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

角色 - 角色通过web.config提供授权机制控制用户可以执行的操作,还可以在站点地图上进行安全修整。

  1. 使用SqlRoleProvider - Microsoft为您提供了一个数据库来存储角色
    • 优点:
      • 适用于web.config
      • 您可以将多个角色分配给用户

    • 缺点:
      • 角色只是一个字符串,没有“权限层次”支持。这可能会导致难以创建用户可以编辑其他用户的规则。

  2. 创建自定义RoleProvider - 可以继承RoleProvider以自定义数据的存储位置和方式。
    • 优点:适用于web.config
    • 缺点:
      • 必须实施自己的存储解决方案
      • 仍然只是一个字符串,并像以前的解决方案一样有限
      • 如果你没有正确实现它,它可能会做很多数据库调用。

  3. 创建自己的认证方案
    • 优点:完全控制 - 只需对页面执行自定义检查,并根据需要进行错误/重定向
    • 缺点:
      • 不适用于web.config / sitemap提供的授权机制。实际上,这意味着向页面添加页面(例如/ Admin)不再保证该页面的安全性。

需要注意的是,成员和角色提供者可以彼此独立地进行选择或定制。如果可以的话,我个人推荐使用SqlMembershipProvider,并评估角色提供者的选项。

用户回答回答于

我不喜欢使用Membership Provider。

当场景是“标准”时这是util,但是如果你需要更多的自定义规则,我认为这样做效果不好。出现“解决方法”。

而不需要存储在XML中,存在另一种解决方案(数据库,例如)。

扫码关注云+社区