ASP.NET MVC 3 - 多个成员资格提供程序和多个登录页面

时间:2011-05-20 17:57:48

标签: asp.net asp.net-mvc membership-provider

在Web.Config上配置多个提供程序很简单,并分别为每个提供程序调用ValidateUser。 但是,如何为每个提供程序使用自定义Authorize属性?就我而言,我想使用2个不同的登录页面,两个不同的登录控制器和两个不同的角色提供者。

有可能吗?

1 个答案:

答案 0 :(得分:0)

如何让您拥有2种不同的自定义授权属性。 如果发现用户未经身份验证,最终结果将是一个不同的视图。 要么 将初始化IPrincipal或IIdentity。您可以使用HttpContent.Current.User.Identity.IsAuthenticated和.IsInRole()

if (CurrentProvider.ValidateUser())
{
     CustomIdentity1 idn = new CustomIdentity1(userName);
     filterContext.HttpContext.User = new CustomPrincipal1(idn);
}
else
{          
     filterContext.Result = new RedirectResult((filterContext.Controller as Controller).
        Url.Action("Login", "User"));         
}

您可以接受名为ProviderName的属性,并基于该属性初始化CurrentProvider。这也可以消除对多个自定义属性的需求。

注意:当然,CustomIdentity1(,2,3)也基于使用哪个提供程序。 CustomIdentity1是IIdentity的一个实现。 CustomPrincipal1是IPrincipal的实现。