在Web.Config上配置多个提供程序很简单,并分别为每个提供程序调用ValidateUser。 但是,如何为每个提供程序使用自定义Authorize属性?就我而言,我想使用2个不同的登录页面,两个不同的登录控制器和两个不同的角色提供者。
有可能吗?
答案 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的实现。