C# 来自MYSQL成员资格提供程序的自定义成员资格提供程序
我正在为MYSQL实现我的自定义成员资格提供程序,为此我编写以下代码:C# 来自MYSQL成员资格提供程序的自定义成员资格提供程序,c#,asp.net,mysql,asp.net-mvc,C#,Asp.net,Mysql,Asp.net Mvc,我正在为MYSQL实现我的自定义成员资格提供程序,为此我编写以下代码: public class CustomSqlMembershipProvider : MySQLMembershipProvider { public override void Initialize(string name, NameValueCollection configs) { base.Initialize(name, configs); } } 编译此类时,出现错误: 'Project
public class CustomSqlMembershipProvider : MySQLMembershipProvider
{
public override void Initialize(string name, NameValueCollection configs)
{
base.Initialize(name, configs);
}
}
编译此类时,出现错误:
'Project.Models.CustomSqlMembershipProvider': cannot derive from sealed type
'MySql.Web.Security.MySQLMembershipProvider' C:\...\CustomSqlMembershipProvider.cs
为什么我会犯这个错误?我添加了MySql.web和MySql.Data程序集引用。您不能从类继承。
不过,您可以通过继承来编写自己的自定义MySql成员资格提供程序这有点离题,但在花了太多时间考虑创建自定义成员资格提供程序后,我突然想到,除了失去使用Microsoft提供的工具管理用户和角色的能力之外,放弃会员资格提供商、角色提供商等并不是什么大不了的事。至少,如果您使用EntityFramework或更好的是nHydrate之类的工具来处理数据库交互的粗糙细节,情况就不是这样了 换句话说,因为我使用的是框架(nHydrate),所以我发现设置自己的自定义身份验证协议更容易。例如,我将Microsoft认为的“用户配置文件”信息与身份验证凭据信息保存在同一个表中。对我来说,对于许多项目来说,这是一种更自然的方法
当然,您的里程数可能会有所不同。正如克劳斯所说,您不能将标记为“sealed”的类划分为子类。但是,您可以执行以下备选方案之一:
public class MyMySqlProvider : MembershipProvider
{
private MySQLMembershipProvider mySqlImpl = new MySQLMembershipProvider();
public override void Initialize(string name, NameValueCollection configs)
{
mySqlImpl.Initialize(name, configs);
base.Initialie(name, configs);
}
public override bool OverrideSomethingElse()
{
bool someBool = mySqlImpl.OverrideSomethingElse();
if (someBool)
{
//someBool = adapt to something else;
}
return someBool;
}
}
其思想是实现两者之间的通用方法,以“适应”您的界面
我只想编写代码来设置外部文件中的连接字符串,我想使用会员资格提供商提供的内置代码。请给出建议,如何执行do@Aayushi设置connectionstring的唯一方法是以下所述的方法: