ASP.NET MVC 3 — поставщик множественного членства и несколько страниц входа

#asp.net #asp.net-mvc #membership-provider

#asp.net #asp.net-mvc #поставщик членства

Вопрос:

Это просто — настроить несколько поставщиков в Web.Config и вызвать ValidateUser для каждого поставщика соответственно.. Но как мне использовать пользовательский атрибут авторизации для каждого поставщика? В моем случае я хочу использовать 2 разные страницы входа, два разных контроллера входа и два разных поставщика ролей.

Возможно ли это?

Ответ №1:

Как вам нравится иметь 2 разных пользовательских атрибута авторизации. И конечным результатом будет другое представление, которое будет представлено, если пользователь не прошел проверку подлинности. Или будет инициализирован IPrincipal или IIdentity. Вы можете использовать HttpContent.Текущий пользователь.Идентификация.Аутентифицируется и .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.