- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个由开发人员组成的小团队中工作,对于完成许多核心任务的最佳方法没有达成共识,其中一个是成员(member)提供者。现在我无法确定这是否与缺乏对替代思维方式或足够规模的项目的接触以保证进行重大调查有关。
我多年来一直是 .net 网络开发人员(在 php 和 asp 经典之前),通常在开发应用程序时,我避免使用内置的 .net SqlMembershipProvider
主要是因为它对于我的需求来说似乎过于复杂,其次是因为我只能想象这样一个复杂的数据模型可能会影响性能。
通常,我使用在相当简单的 user -> user roles <- roles
上运行的自定义成员资格和角色提供程序。类型架构。我根据相关应用程序的需要维护标准成员(member)提供程序功能,例如帐户恢复、个人资料详细信息、登录帐户锁定失败、 secret 问题等,例如 AD 安全应用程序几乎没有附加功能,面向公众的应用程序通常具有商场。这也意味着任何需要存储过程来咀嚼用户数据的任务应该很容易编写并且执行得很好。直接的 SQL 命令、良好的索引和简单的数据模型产生了一个高性能、可扩展的解决方案,该解决方案应该需要更改我可以完全控制根据需要进行更改,我认为这是非常宝贵的。
根据您的经验,您会说这是一种过时的方法吗?您是否遇到过内置提供程序的可扩展性问题?您通常采用什么方法以及在什么情况下?
谢谢
最佳答案
除非您特别确定了不这样做的令人信服的理由,否则我建议您从 SQLMembershipProvider 开始,并根据需要对其进行调整。
我们发现内置提供程序为我们提供了所有基础知识,而我们几乎没有做任何工作。开发一个好的安全结构有很多要素,很容易忘记其中一个,或者只是懒惰而不是在你自己滚动时以“正确”的方式实现其中一个。我想到了诸如加盐密码和通过电子邮件重置密码之类的事情。
当然,SQLMembershipProvider 不是 Elixir 。我们在一些情况下需要对身份验证做一些更复杂的事情。但是我们能够通过扩展 SQLMembershipProvider 而不是替换它来解决这些问题。请参阅我的回答 What is a good way to extend .Net Membership to track user logins更多细节。
我们没有注意到 SQLMembershipProvider 引起的任何重大性能问题,所以我认为打性能牌是没有根据的。毕竟,您的用户通常会花多少时间登录您的系统?如果您的所有页面加载速度都很快,那么根据您将提高性能的想法(可能是错误的)编写您自己的所有代码是没有任何理由的。这就是我们一直在读的可怕的“过早优化”。
Roles 框架对于我们的需求来说过于简单,所以我们根本不使用它。但它也没有妨碍。
而且,正如 Hogan 指出的那样,您更有可能找到已经熟悉内置提供程序工作方式的开发人员,这意味着他们将花费更少的时间来尝试找出您的架构,并且(希望)更多的时间完成真正的工作。
关于.net - SqlMembershipProvider 与自定义解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445260/
我在一个由开发人员组成的小团队中工作,对于完成许多核心任务的最佳方法没有达成共识,其中一个是成员(member)提供者。现在我无法确定这是否与缺乏对替代思维方式或足够规模的项目的接触以保证进行重大调查
在哪里可以找到 SQLMembershipProvider (.NET2.0) 的源代码? 是可用的么? 最佳答案 源代码已经发布。 See ScottGu's blog for further de
在我着手编写自己的解决方案来解决这个问题之前,任何人都可以向我指出一个预构建的解决方案,用于在使用 SqlMembershipProvider 时管理标准用户详细信息吗?我通过 Google 找到的解
我有一个即将开展的项目,将与 70,000 多个用户(教育)打交道。我想知道 ASP.NET SqlMembership Provider 是否已经以如此大的容量使用过?假设硬件在那里,是否需要做一些
我们正在将我们的用户身份验证从提供的 .NET 实现迁移到我们自己的系统。 我们希望能够支持存在于 aspNet_Membership 表中的旧密码。 Password 和 Salt 位于该表中,因此
我正在使用 SqlMembershipProvider 并将我的密码存储为哈希值。我还在另一个表中保留了(散列)密码的历史记录。我希望能够将用户尝试更改密码的密码与旧密码进行比较,如果密码太新则抛出错
如何禁用 的帐户锁定功能SqlMembershipProvider ? MaxInvalidPasswordAttempts 的 MSDN 文档属性没有指定如何禁用它。如果我找不到正确的方法,我会将
我正准备开始构建一个新的 asp.net 项目,我才刚刚开始使用 SQLMembershipProvider 的全部内容。我真正想做的是消除对用户名的需求,只需要用户的 key 作为电子邮件地址。 在
这是场景: 我使用默认的 SqlMembershipProvider 在网站上实现 membershp。现在我想迁移到我的自定义成员资格提供商。 (仅供引用,我使用的是 CodeFirst Membe
问题如果我使用 GUID,Membership.GetUser 工作正常,但如果我在没有参数或名称的情况下尝试它会失败: //This works and adds records to aspnet
我试图获取使用 SqlMembershipProvider 在 MiniProfiler 中显示时发生的任何数据库查询,但我想不出任何方法来交换 SqlConnection 与 ProfiledDbC
我们正在迁移到生产环境,我想编写一个脚本,让 DBA 在运行我使用 aspnet_regsql 生成的脚本后可以立即创建具有角色的用户。在开发环境中,我一直在 Global.asax.cs 中使用成员
我正在使用 ASP.NET SqlMembershipProvider 在 Web 应用程序上实现授权,但它在调用 GetUser 方法时随机抛出无效的强制转换异常。 我可以登录并浏览页面,一切都很好
我想创建一个仅供员工在内部使用的网络应用程序(网站)。 我想使用事件目录成员提供程序来验证用户。令我困惑的是如何管理配置文件和角色,以及如何将具有 FK 的用户链接到其他表。 到目前为止,我正在考虑做
在 ASP.NET 成员资格的 SQLMembershipProvider 源中,有一个自定义异常 MembershipPasswordException。 它的定义不是源代码的一部分,但是当我对其进
我正在使用 Visual Studio 2008 SP1 和 C# 开发一个 ASP.NET 应用程序。我也在使用 Sql Server 2008 SP1。 我正在尝试将使用命令 aspnet_reg
在创建一个新的 MVC 项目时,如果它是一个非空项目,Visual Studio 会处理 SqlMembershipProvider。 Visual Studio 创建一个数据库和所有必要的表。 但是
我正在创建一个自定义 SqlMembershipProvider 类,以向基类添加一些增强功能。不过,我正在忙于处理连接字符串。如何从配置中读取连接字符串名称并使其可供其余方法使用? 现在我有: pu
我将 SqlMembershipProvider 与 asp.net 一起使用,在我尝试使用 iframe 或框架之前它工作正常。 当我在没有它们的情况下登录时,我没有任何问题,但如果我从我们客户的站
我一直在寻找有关如何将现有成员(member)数据库与新的 mvc 应用程序一起使用的指导。我发现的所有内容都与创建新的成员(member)数据库有关。 我希望简单地将新应用程序指向某个地方的现有数据
我是一名优秀的程序员,十分优秀!