#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.