Как установить пользовательский принципал в asp.net

Я новичок в веб-приложении. Я создал собственный принцип и пытаюсь установить его в CurrentDomain. Этот код прекрасно работает в приложении WPF. Но здесь выдается исключение из политики "Основной объект по умолчанию не может быть установлен дважды".

 var principal = new CustomPrinciple(currentIdentity);
 Thread.CurrentPrincipal = principal;
 AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);

Мой CustomPrincple является производным от ClaimsPrinciple

  public class CustomPrinciple : ClaimsPrincipal
  { }

Мне интересно, почему мне не разрешено устанавливать это здесь. Как я могу установить свой собственный принцип в веб-приложении.

2 ответа

Пользовательский участник должен быть установлен в файле global.asax для выполненного запроса, а не в потоке. Затем вы получаете пользовательский принципал из свойства HttpContext.User

Этот ответ в этом вопросе детализирует лучший способ сделать это: ASP.NET MVC - Установить пользовательский IIdentity или IPrincipal

Вы не можете вызывать SetDomainPrincipal - вместо этого установите Thread.CurrentPrincipal и HttpContext.User.

http://leastprivilege.com/2012/10/08/custom-claims-principals-in-net-4-5/

Другие вопросы по тегам