Как установить пользовательский принципал в 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/