2011-05-20 80 views
1

它的简单配置多个供应商上的Web.Config分别调用的ValidateUser每个供应商.. 但如何使用自定义的授权为每个供应商的属性?就我而言,我想使用2个不同的登录页面,两个不同的登录控制器和两个不同的角色提供者。ASP.NET MVC 3 - 多会员提供和多个登录页

可能吗?

回答

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的实现。