27

我目前正在转换非常旧的,但工作的经典ASP网站ASP.Net。微软会员供应商VS自定义提供者VS完成自定义登录系统

它有一个完全自定义的书面用户管理系统。虽然它工作正常,但它确实需要刷新,因为我希望它能够为作品中的某些未来项目提供更多的灵活性。

当我问别人这件事时,他们说“你需要使用微软的提供商”,并且讲述了微软如何免费发布所有这些东西,它们有多好,应该尽可能多地使用。

我已经做了相当多的研究(主要看http://asp.net/learn上的视频),并且对于一些功能留下了深刻的印象,因为似乎有拖放组件的项目需要我花时间写。

但是,当前的成员数据库很难解释,它是一个完全自定义的书面数据库,它具有许多内部关系......它与默认的Microsoft提供程序并不真正“兼容”。

我看了一下How Do I: Create a Custom Membership Provider?,但是我感觉有点偏离了我的舒适区,担心它会变慢,引入安全漏洞或根本无法工作。

在一天结束时,微软成员资格提供商应该为我工作 - 我真正需要的唯一定制是在我的数据库中使用用户名/密码字段的登录名以及具有很多定制的创建用户脚本代码到几个第三方系统(需要提供服务等)。

我只是想知道,如果面临类似的情况,你会怎么做?

  1. 使用Microsoft成员资格提供并以某种方式得到它为你工作(虽然我想建议)

  2. 使用Microsoft成员资格提供,但使用已在你的代码定制的自定义提供。

  3. 使用您自己的完全定制的解决方案?

+0

如果所有用户都在同一家公司,是否没有其他身份验证工具可以搭载?让您的用户不再追踪另一个密码,不用再写密码更改逻辑。 – DOK 2009-12-02 18:47:05

+0

并非所有的用户都在同一家公司......第一个用户注册了一家公司,并从他们的控制面板,他们可以设置额外的用户。 – Wil 2009-12-02 23:05:13

回答

8

该视频不复杂的事情:)如果你要实现自定义的供应商,然后反射在现有的一个当然是一个良好的开端:)

作为一个快速和肮脏的选项你可以, ,破解SQL成员资格提供程序使用的存储过程,但提供服务的自定义代码可能会扩展该过程。

如果您考虑一下,服务的远程配置并不属于成员资格提供者,它不是真正的成员资格功能 - 所有成员资格都提供用户名和密码以及身份验证。我自己的感觉是,您应该将服务的提供从那里移出,并在创建用户后在ASP.NET网站上执行它 - 即使这只是在成员资格提供程序完成后才调用存储过程。如果您这样做,您可能会发现SQL成员资格提供程序将完成您需要的所有操作(可能还使用角色&配置文件提供程序),因此您的代码编写起来更少!

+0

我同意将它们分开...在写它的时候,它只是一个单一的应用程序,并没有构建模块化,甚至认为它将用于其他系统。这是我在刷新时想要做的事情之一。我会担心编辑MS的存储过程,稍后更新会使我困扰。在这一点上,我认为我可以做所有的事情(在一天结束的时候,系统在过去的7年里工作得很好),然后再看看MS的东西...... – Wil 2009-12-04 11:26:32

+0

但是,是的,角色而配置文件让我惊叹不已,花了几周的时间写了一些东西,并且他们拖放了可以在盒子中运行的组件! – Wil 2009-12-04 11:27:14

+2

我还没有看到视频,但MSDN上的“如何实现自定义成员资格提供程序”(http://msdn.microsoft.com/en-us/library/ms366730.aspx)给出了一个很好的介绍一个简单的成员资格提供者,包括可以很容易地适应数据库实施的建议。 – 2009-12-04 12:05:15

3

如果现有提供程序工作正常(为您的数据提供了正确的字段),请使用它开始。稍后您可以很容易地将其替换为客户提供商(仅配置一个值更改)。

请注意,这里没有“开箱即用”的ASP.NET管理界面,您需要自行打印或使用第三方界面。

8

我以前一直在类似的情况。在这两种情况下,我们都围绕现有机制创建了提供者的自定义实现(MembershipProvider,RoleProvider,ProfileProvider)。

在这两种情况下,我们只使用提供者实现进行只读访问,例如,给我们在web.config等简单验证gubbins。用户管理代码保持良好,因为它工作得很好。

+0

+1用于保持提供程序实现为只读。我也在项目上做了这些工作,以获得围绕表单身份验证的内置功能的使用,同时将其余的管理代码留在单独的类库中。 – Element 2010-02-24 22:21:44

3

使用我专门的MembershipProvider来处理我自己的数据库表。

相关问题