Аутентификация C # - установка UserRole в качестве глобальной переменной? - PullRequest
0 голосов
/ 07 марта 2011

У нашего dba есть SPROC для аутентификации, который возвращает роль пользователя только в случае успешной проверки.

В моем пользовательском классе аутентификации метод ValidateUser обращается к этому SPROC через Entity Model & Domain Service, и, поскольку SPROC возвращает RoleName при успешной проверке, у меня уже есть его экземпляр.

Когда приходит время запустить метод GetRolesForUser в моем пользовательском RoleProvider, я полагаю, что мог бы написать еще один SPROC, чтобы снова захватить RoleName, но это кажется немного избыточным, так как я уже получил роль.Я хотел бы иметь возможность кэшировать роль пользователя в моем методе ValidateUser, получить к нему доступ в моем методе GetRolesForUser и улететь в закат.Это не только сэкономит время при написании SPROC, но также ограничит количество вызовов в БД, которые выполняет приложение.

Мысли?

Скотт

1 Ответ

1 голос
/ 07 марта 2011

Это правильно. Когда вы запускаете свой пользовательский RoleProvider, у вас уже есть состояние сеанса, которое вы можете использовать для хранения значения «RoleName». Альтернативно, вы можете расширить вызов MembershipUser, включив в него строковое поле для «RoleName», которое вы можете заполнить первый вызов, а затем назначить обратно для context.user.

Я бы не предложил здесь объект Cache, потому что роли будут привязаны к пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...