MVC 4 AuthorizeAttribute Users - когда это очищается
Я продлил AuthorizeAttribute
с моим собственным классом.
Я специально отменяю OnAuthorization
метод:
- Я создаю
ClaimsPrincipal
(если пользователь распознается) и...- назначить
ClaimsPrincipal
вfilterContext.HttpContext.User
- иесли
this.Users
IsNullOrEmpty Я установилthis.Users
кClaimsPrincipal.Identity.Name
- назначить
- ... и я заканчиваю с призывом
base.OnAuthorization
Я использую это расширение AuthorizeAttribute, добавляя экземпляр в GlobalFilterCollection:globalFilterCollection.Add(new AuthorizationAttributeExtension());
Приложение запускается впервые...
Запрос 1 поступает от пользователя 1, пользователя 1 ClaimsPrincipal
создан filterContext.HttpContext.User для User 1, и потому что this.Users
IsNullOrEmpty,this.Users
имеет значение User1.Identity.Name. Следовательноbase.AuthorizeCore
вернет истину. Пользователь 1 получает.
Запрос 2 поступает от пользователя 2, пользователя 2ClaimsPrincipal
создан filterContext.HttpContext.User для User 2, и потому что this.Users
не является NullOrEmpty (все еще имеет значение от пользователя 1)!, this.Users
остается User1.Identity.Name. Следовательно base.AuthorizeCore
вернет false (Пользователь 1 <> Пользователь 2). Пользователь 2 не может войти!
Вопросы:
Почему this.Users
все еще есть значение из предыдущего запроса? Это by-design? Зачем?
я думал this.Users
может быть пустым для каждого нового запроса? Как this.Users
очиститься?
Может быть, я не должен проверять IsNullOrEmpty, просто установите this.Users
в "User1,User2", что позволило бы обоим пользователям... Но если я получу 100 уникальных пользователей...
Или, может быть, я не должен был устанавливать this.Users
совсем; в конце концов this.Users
похоже, что речь идет об авторизации только определенных пользователей; Мне не нужны только конкретные пользователи, мне нужен любой аутентифицированный пользователь, чтобы войти; может мне стоит уйти this.Users
пусто!