Авторизация текущих утверждений MVC 5 и обновление утверждений

У меня 2 вопроса по претензиям:

1) В .Net 4.5 и MVC 5, как Microsoft реализует авторизацию, когда вы устанавливаете на контроллере AuthorizeAttirubte, проверяет ли он базу данных, чтобы получить роль пользователя? Или он использует претензии?

Я где-то читал, что Microsoft каждый раз использует базу данных для проверки роли, и они посоветовали написать новый AuthorizeAttribute для реализации аутентификации утверждений.

Я говорю об этой статье: http://kevin-junghans.blogspot.be/2013/10/improving-performance-of.html

Или это устарело и сейчас майкрософт использует роли в претензиях?

2) Второй вопрос по обновлению претензий:

Представьте, что когда пользователь входит в систему, я устанавливаю его отображаемое имя в качестве утверждения. У пользователя есть возможность изменить свое отображаемое имя, поэтому он меняет его, но по-прежнему видит свое старое отображаемое имя, пока не перерегистрируется на веб-сайте.

Правильно ли будет как-то обновить претензию....? И как это сделать?


person Alnedru    schedule 28.01.2014    source источник


Ответы (1)


  1. Атрибут авторизации использует вещи из User.Identity, такие как IsAuthenticated/IsUserInRole, которые косвенно просматривают утверждения. Доступ к базе данных основан на обновлении файла cookie для входа, а не на проверке авторизации, поэтому он ортогонален.
  2. Утверждения обновляются при создании файла cookie для входа (попадание в базу данных). Чтобы принудительно обновить претензии, вы можете просто отказаться от пользователя, который принудительно обновляет.
person Hao Kung    schedule 28.01.2014
comment
Я не понял первое, так что в основном AuthorizeAttribute на контроллерах не попадает в базу данных каждый раз? Но вместо этого проверяет претензии, вот что я понял. И во-вторых, мне просто нужно отказаться от пользователя, будет ли это иметь какое-либо влияние на сеанс пользователей в целом? - person Alnedru; 28.01.2014
comment
Правильная авторизация проверяет удостоверение, основанное на утверждениях по умолчанию, и не попадает в базу данных. Зависит от вашего приложения, что происходит, когда вы уходите из пользователя. - person Hao Kung; 28.01.2014
comment
ничего, когда пользователь входит в систему, я просто добавляю некоторые претензии и все), поэтому я полагаю, что это не имеет никакого эффекта, хорошо, тогда я сделаю это. Последний вопрос, если вы знаете, как узнать, использует ли пользователь постоянный вход в систему или нет (запомнить меня, вариант) - person Alnedru; 28.01.2014
comment
@HaoKung, если, например, я добавил пользователя в роль пользователя. Не сообщая и не заставляя пользователя выйти из системы, как и когда вы обновите утверждения пользователей? - person Jeremy Cook; 06.02.2014
comment
Вы не можете, пока файл cookie для входа не будет восстановлен из базы данных, у пользователя не будет претензии, связанной с тем, что он находится в этой новой роли. - person Hao Kung; 06.02.2014
comment
@Hao Kung: Не могли бы вы объяснить часть 2? Где правильно / лучше всего подать заявление об уходе и что я должен использовать? Когда я использую ApplicationSignInManager.SignIn(user...), он всегда отменяет текущего вошедшего в систему пользователя (я), а не пользователя, чьи требования я обновил. - person mmmato; 06.09.2017
comment
Вы не можете войти в систему другого человека, так как он должен получить обновленный файл cookie, а не вы. - person Hao Kung; 16.09.2017