Где я могу указать, к какой компании принадлежит пользователь, с помощью ASP.NET MVC и MembershipProvider?

Когда пользователь входит в мое приложение ASP.NET MVC, мне нужно указать, к какой компании принадлежит этот пользователь. Компания, к которой они принадлежат, будет определять, из какой базы данных поступают все их запросы, поэтому для меня важно запросить информацию об их компании, как только они войдут в систему, и сохранят ее, чтобы мне не приходилось выполнять этот поиск снова.

Где / как мне хранить этот идентификатор компании? Сессия? Каким образом настроить MembershipProvider, который позволил бы мне сохранить эту информацию в объекте User?

Как лучше всего с этим справиться? Буквально каждый запрос, который я делаю после этого, будет сильно зависеть от идентификатора компании, поэтому важно, чтобы я сохранил эту информацию.


person KingNestor    schedule 10.06.2009    source источник


Ответы (3)


Вы можете использовать свойства профиля ASP.NET, но вам нужно создать для них свой собственный обработчик. Ознакомьтесь с ответом седьмого элемента на этот вопрос для идей о том, как начать.

person Matthew Jones    schedule 10.06.2009

Вы можете написать свой собственный модуль аутентификации для расширения FormsAuthentication и сохраните компанию в IPrincipal.

Затем вы можете выполнить User.Identity.Company так же, как User.Identity.Name.

Это больше предварительная работа, чем привязка компании к уже существующей корзине, такой как Cache или Session, но она позволяет вам написать довольно легкий код, когда у вас все подключено.

person Portman    schedule 10.06.2009

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

Если вы все равно получаете доступ к профилю в каждом методе действий, вам следует использовать его вне курса.

person Mathias F    schedule 10.06.2009