有没有办法禁止ASP.Net成员资格提供程序使用web.config?
目前它在web.config中存储连接字符串和sqlMembershipProvider,这不是我想要的。
谢谢
答案 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)
提供程序管道是配置驱动的。
根据您的经验水平,您可能能够推出自己的提供商,这些提供商已经通过其他方式进行了初始化,但这绝对不是一项微不足道的任务,并且充满了在最不合时宜的时刻出现的微妙陷阱,也许是老板登录,他的网络密码泄露。
尝试以编程方式初始化内在提供者将是一种令人沮丧的练习。
如果您要解释为什么不喜欢使用配置文件,这可能有帮助,嗯,配置?