Я поставил пользовательский атрибут авторизовать в мое приложение MVC, что делаетUser.IsInRole терпит неудачу за одно действие, но не для другого
if (!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
и если это верно будет перенаправить вас на несанкционированный.
Я поместил этот атрибут на свой контроллер на уровне контроллера.
Одно действие работает нормально, и в одном действии я получаю несанкционированный доступ.
Есть ли какая-то ошибка или проблема в системе ролей? Я прочитал, что выходы из системы и могут заставить некоторый кеш обновить или что-то еще, однако система, которую я использую, проверяет подлинность с вашими учетными данными домена, поэтому нет возможности выйти из системы.
Я попытался перезапустить пул приложений и удалить мой файл cookie сеанса, но ничего не сработало.
Кто-нибудь испытал эту конкретную проблему раньше или имеет некоторые рекомендации относительно возможного устранения любого связанного с ней кэширования (при условии, что это проблема кэширования)?
ETA: Другой пользователь в системе дал себе роль, требуемую для контроллера, и оба действия отлично работают для него. Поэтому, возможно, мой пользователь как-то прослушивается. Это на UAT, что немного сложнее отлаживать, чем работать на моей локальной машине (что отлично работает).
ETA2: Я уверен, что это проблема кэширования, так как она идет по URL-адресу с? 1 = 1 в строке запроса, она работает. Однако я не могу сделать недействительным кеш. Это может быть проблемой в будущем при назначении ролей людям.
Справедливо, что он есть (2) и это просто кеширование URL-адреса против маркера безопасности. Я не могу опубликовать больше кода, потому что это все внутреннее отношение к ролевой системе MVC. Я думаю, мне нужно найти способ сделать недействительным и повторно проверить пользователя, чтобы исправить эту проблему. Мне любопытно узнать, где он хранит этот кеш, однако, поскольку недействительность пула приложений не очищает его. В устаревший код я иду ... – NibblyPig