.Net会员资格的替代方案

时间:2009-03-31 19:18:54

标签: asp.net asp.net-membership

.net会员资格有什么替代\ mods吗?

我发现它非常严格;

  • 无法轻易更改用户名。您必须创建一个新用户并复制字段,但是您丢失了主键,或者您必须自己直接编辑用户表。

  • 其他个人资料字段一起存储为一个blob。

5 个答案:

答案 0 :(得分:13)

ASP.Net成员资格使用提供者模型。这意味着只要您遵循provider contract,您就可以完全自由地实施自己的会员提供商,甚至可以继承和扩展现有的提供商。

另外还有一个用于询问现有替代品而非尝试自己构建新东西的方法。

答案 1 :(得分:8)

我会继续在这里列出我的选择。我已经推出了自己的身份验证库,我觉得它很棒,可以公开发布......所以我做到了。它的设计旨在让您不受限制,整体而言,它非常简约。我没有提供很多开箱即用的用户控件,但在大多数网站上我都看到过这些内置的用户控件从未使用过。因此,我没有尝试制作更灵活的用户控件,而是决定让它简单易懂,创建自己的登录控件等。

该项目称为快速,安全和简明身份验证,简称FSCAuth。它是BSD许可的。您可以在BinpressBitbucket

下载

灵活的“UserStore”模型(Form的等效提供者)使您可以随心所欲地构建数据库。它可以支持纯文本文件,XML,MongoDBSql Server以及中间的任何位置。

以下列出了我认为特别优于表单身份验证的内容:

  • 无状态认证系统。无需跟踪数据库或内存中的用户会话。这使得扩展到需要对您的身份验证代码进行很少(如果有)更改的多个服务器变得微不足道
  • 将每个用户的任何内容用作唯一ID。没错,没有更多的GUID!任何适合字符串的东西都是公平的游戏
  • 烘焙的HTTP基本身份验证。您可以只在您想要(或全局)的页面上启用基本身份验证,并且可以像使用典型的基于cookie的身份验证一样进行相同的呼叫
  • 很难做到不安全。由于它是如何工作的,我尽可能少地将核心代码留给最终用户进行实际身份验证,它非常安全并且会保持这种状态,除非你真的试图打破它。我处理cookie,HTTP Basic Auth和所有哈希。您只需向FSCAuth提供一个数据库即可将其放入。
  • BCrypt对哈希的支持是微不足道的。 How to do it.。在表单身份验证中,它是almost not possible
  • 我喜欢它:)

当然它也缺乏,而且公平地说我会包含一些缺乏的东西

  • 无法验证IIS 6中的静态文件
  • 没有蛮力预防(尚未)。这意味着您需要确保同一个人在2秒内没有尝试200次登录页面。
  • 它没有内置于ASP.Net
  • 没有Windows或Passport身份验证(无计划添加)

答案 2 :(得分:2)

由于ASP.NET成员资格模型是围绕Providers构建的,因此可以使用许多替代方案。

默认情况下,用户拥有一个GUID的ProviderUserKey,这是数据库的主键,因此如果需要,您应该可以编写一些内容来更改其用户名。

就配置文件而言,是的,默认blob非常烦人。您可以查看将个人资料映射到表格的SQL Table Profile Provider,或者相当快roll your own

答案 3 :(得分:0)

只要更改用户名,就可以使用CreateNewUser()方法轻松完成,并根据当前用户填写相应的字段,然后删除当前用户。

配置文件字段不是.NET成员资格提供程序模型的一部分,而是配置文件提供程序的一部分。这是一个备受争议的话题,对于大多数生产机器而言,正确的方法是投入更好的配置文件提供程序解决方案,例如此Table Profile Provider,它存储您期望的配置文件字段而不是占有记忆力的blob。或者,您可以轻松地滚动自己的个人资料提供者,查看instructions here

当然有.NET成员资格替代品,但大多数都是错误或具有小功能集。在一两个月的时间内进行开发真的很糟糕,然后意识到它不会支持你需要的所有功能。 .NET Membership是一个经过验证的解决方案,这就是它经常被使用的原因。

答案 4 :(得分:0)

至于个人资料,有几个alternatives out there。这两个使用表或让您调用存储过程。当然你也可以实现自己的。我个人厌倦了使用Profile Providers,发现在我的代码中处理配置文件更容易控制和包含。

至于其他问题,您还可以实施自己的提供商。 Microsoft向SQL Providers发布了源代码,因此它可以为您提供一个起点。