我想从头开始构建类似门户网站的asp.net Web应用程序,并将asp.net MembershipProvider视为用户管理的标准方式。我创建了继承自SqlMembershipProvider的提供程序并覆盖ValidateUser方法:
public override bool ValidateUser(string username, string password)
{
string temp = ApplicationName;
List<MtscApp> allApps = GetAllApplications();
foreach (MtscApp app in allApps)
{
ApplicationName = app.Name;
Roles.ApplicationName = app.Name;
if (base.ValidateUser(username, password))
{
return true;
}
}
ApplicationName = temp;
Roles.ApplicationName = temp;
return false;
}
我正在尝试验证针对所有应用程序输入的凭据,而GetAllApplicationsMethod()从aspnet_Applications表中获取所有应用程序(我也有一部分用于在同一个表中插入应用程序)。
如果验证成功,则应用程序名称将在Membership和Roles提供程序上保留,否则它将保留在默认的匿名用户的预定义应用程序上。
答案 0 :(得分:1)
是的,我曾多次做过类似的事情。唯一的区别是我根据用户进入的URL查看数据库表中的应用程序名称,并仅验证该应用程序。该表有两个字段,URL和ApplicationName。 ApplicationName与aspnet_Applications.ApplicationName字段的ApplicationName相同。