2014-09-05 2 views
1

мне интересно, как добавить пользователя олицетворения на MVC идентичности 2.0, я видел, что некоторые люди используют это:Как добавить олицетворения в MVC ASP.NET Идентичность 2,0

FormsAuthentication.SignOut(); 
FormsAuthentication.SetAuthCookie(user.UserName, false); 

Это не будет работать для меня это обыкновение даже выйти я использую:

AuthenticationManager.SignOut() 

Так как я продвигаюсь делать это у меня есть панель администратора, что список пользователей, я получаю USERID или имя пользователя, что именно я должен делать? Я никогда не использовал Претензии, поэтому я не понимаю этого, мне не нужно возвращаться к пользователю, которого они могут просто выйти из системы.

+0

Я сделал это раньше для одного из моих проектов. И вот мой путь: http://tech.trailmax.info/2014/06/user-impersonation-with-asp-net-identity-2/ – trailmax

ответ

0

Вот решение для тех, кто еще с этим вопросом -:

var user = _db.AspNetUsers.Single(a => a.Id == id); 

var impersonatedUser = UserManager.FindByName(user.Email); 

var impersonatedIdentity = UserManager.CreateIdentity(impersonatedUser, DefaultAuthenticationTypes.ApplicationCookie); 

AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = false }, impersonatedIdentity); 
0

Спасибо за этот вопрос, как он помог мне найти ряд решений, в том числе и ваши @trailmax. После некоторого раздумья я пошел об этом по-другому, так как мне просто нужно было изменить некоторые претензии, чтобы сделать олицетворение. Я называю это полу-олицетворением, поскольку он просто меняет несколько вещей, а не полностью меняет пользователя.

Как trailmax Я написал blog post on my approach со всем кодом. Ниже я подытожил, как это работает.

  1. добавить сеанс cookie с информацией о олицетворении мне нужно изменить в текущем пользователе, чтобы разрешить им доступ к информации, принадлежащую другому пользователю. В моем случае у меня был ключ к некоторым данным.

  2. Затем я использую новый метод MVA 5 AuthenticationFilter OnAuthentication для: a) поиска файлов-олицетворений. Если он нашел это, он изменил Претензии в текущем ClaimsPrincipal, который фильтр затем распространил бы через приложение.

  3. Выход из режима олицетворения был достигнут путем удаления файла cookie, который вы делаете, установив дату его истечения на дату до этого момента.

Преимущества намного больше контроля над уровнем доступа, но это не будет работать во всех случаях. В my article я сравниваю свой подход с подходом @ trailmax, чтобы выявить преимущества каждой реализации.

Смежные вопросы