ASP.Net会员提供商

时间:2010-07-20 10:00:00

标签: c# asp.net-membership membership-provider

有没有办法禁止ASP.Net成员资格提供程序使用web.config?

目前它在web.config中存储连接字符串和sqlMembershipProvider,这不是我想要的。

谢谢

2 个答案:

答案 0 :(得分:6)

您通常可以在调用其默认构造函数后立即使用提供程序,并在其上调用Initialize。但是,如果没有web.config,则无法使用System.Web.Security.Membership抽象,因为Membership类已连接到配置文件。使用Membership类时,它将实例化您在配置文件中配置的类型。

正如我所说,当您不想在配置文件中配置它时,您可以在代码中创建它。这将是一个很好的方法,尤其是当您拥有自己的IoC框架时(您可以将Membership外观视为IoC实现,仅适用于派生自MembershipProvider的类型)。以下是创建SqlMembershipProvider

的示例
var configuration = new NameValueCollection();

configuration.Add("name", "SqlProvider");
configuration.Add("connectionStringName", "SqlServices");
configuration.Add("applicationName", "MyApplication");
configuration.Add("enablePasswordRetrieval", "false");
configuration.Add("enablePasswordReset", "true");
configuration.Add("requiresQuestionAndAnswer", "true");
configuration.Add("requiresUniqueEmail", "false");
configuration.Add("passwordFormat", "Hashed");
configuration.Add("maxInvalidPasswordAttempts", "5");
configuration.Add("passwordAttemptWindow", "10");

var provider = new SqlMembershipProvider();
provider.Initialize("SqlProvider", configuration);

// And here store it in a static field or register it with your
// favorite IoC container.
container.RegisterSingle<MembershipProvider>(provider);
祝你好运。

答案 1 :(得分:1)

提供程序管道是配置驱动的。

根据您的经验水平,您可能能够推出自己的提供商,这些提供商已经通过其他方式进行了初始化,但这绝对不是一项微不足道的任务,并且充满了在最不合时宜的时刻出现的微妙陷阱,也许是老板登录,他的网络密码泄露。

尝试以编程方式初始化内在提供者将是一种令人沮丧的练习。

如果您要解释为什么不喜欢使用配置文件,这可能有帮助,嗯,配置?