2012-02-11 3 views
3

Im, пишущий этот webapp и хочу авторизовать контроллеры в смешанных условиях. Например:Mixed Authorize Annotation

Я хочу, чтобы-доступ, если пользователь находится в роли «Администратор» или его имя пользователя является «programad», как это:

[Authorize(Roles = "Administrator", Users = "programad")] 

Я хочу это, потому что, когда я первый зарегистрировать себя на приложение (для тестирования, dev-процесс и т. д.) Я еще не администратор. Я хочу получить первые acces своим именем пользователя, чтобы потом я мог включить себя в роль администратора.

Я положил это на уровень контроллера, но, похоже, не работает, он просит меня снова войти в систему, и он лишает меня доступа, даже когда я ввожу свои учетные данные.

Как я могу авторизовать свое имя пользователя и/или мою роль?

+0

Вот лучшее решение. Просто зарегистрируйте свой регистрационный код для количества зарегистрированных пользователей. Если это число равно 0, то первый зарегистрированный пользователь автоматически назначает роль администратора. –

ответ

2

Это потому, что AuthorizeAttribute говорит, что пользователь должен находиться в роли «Администратор» именоваться «programad». Самый простой обходной путь будет создать другую роль, место пользователя «programad» в нем, а затем Изменить AuthorizeAttribute в

[Authorize(Roles = "Administrator, NewRole")]

где NewRole является то, что вы называете новую роль, чтобы содержать пользователя «programad».

Если вам действительно нужно изменить AuthorizeAttribute, чтобы вести себя с ролью пользователя ИЛИ, вам нужно будет создать новый класс, который происходит из AuthorizeAttribute и переопределяет метод AuthorizeCore, заполняющий вашу логику авторизации.