1

我有一个 ASP.NET MVC 应用程序,我刚刚在其中集成了RPX第三方联合身份系统。集成工作正常,但我在想如何在 ASP.NET 级别处理它时遇到了一些困难。

我对 ASP.NET 很陌生(我正在使用 MVC 学习它),并且我发现了一些关于成员资格和配置文件数据的提供者模型,它看起来非常复杂(但同样强大)。我正在努力解决的具体问题是用户对数据库的持久性。到目前为止,我一直在使用标准SqlMembershipProvider实现,效果很好。但是,我现在想做一些事情,例如在数据库中存储和检查验证码以进行电子邮件验证(以防用户的电子邮件地址被 RPX 结果列为未验证),并保留返回的数据。其中一些对于身份验证至关重要,例如电子邮件地址,而其中一些只是个人资料信息(例如用户的年龄、性别等)。

在 ASP.NET 数据库中,我有一堆其他特定于应用程序的表,我通过 NHibernate 与之交互。我对 ASP.NET 中的 Membership/Profile 的理解是它处理持久性,所以我不需要对 NHibernate 做任何事情来实现这一点。

我的目标是让登录体验类似于 StackOverflow 的体验,但有一些额外的部分(例如电子邮件验证)。我是否需要构建一个完整的自定义提供程序来执行此操作,或者SqlMembershipProvider我可以以有效的方式将默认设置更改为我的意愿?

[另请参阅我的另一个问题,关于此类应用程序中的密码。]

4

1 回答 1

2

我过去做过类似的工作,只是创建了一个从 SqlMembershipProvider 继承的新提供程序类,然后覆盖我需要的方法。

您仍然可以先调用基方法实现来完成大部分工作,然后在派生类中执行您需要的任何附加逻辑。从头开始构建提供程序是一项繁重的工作,并且应该是您最后的手段。

您可以使用对 aspnet_Membership 的键引用将新表添加到数据库中 - 然后添加您自己的存储过程,您可以从派生的提供程序方法中调用这些存储过程来对这个新表执行您需要的任何操作。这比在成员模式中添加列要好,因为它可以使您的自定义内容解耦。

您仍然需要调查 SqlMembershipProvider 类,就您需要覆盖的内容而言,但我认为根据您所描述的内容,这种方法对您有用。

于 2009-06-15T04:29:36.950 回答