#asp.net-mvc-3
#asp.net-mvc-3
Вопрос:
Вот в чем проблема под рукой: я разработал ASP.NET Приложение MVC3 с использованием Razor. Я также внедрил пользовательский поставщик членства и переопределил метод ValidateUser(). Внутри я запрашиваю свою базу данных и получаю много пользовательской информации в дополнение к авторизации по паролю.
На данный момент я переношу эту информацию, то есть CompanyID, в статические свойства класса. Это работает, и я могу отображать / использовать эту информацию во всем моем приложении. Проблема возникает, когда пользователь закрывает вкладку своего браузера. При повторном открытии приложения пользователь проходит аутентификацию с помощью файла cookie, поэтому ему не нужно повторно входить в систему; однако эти статические переменные удаляются.
Итак, парни и девушки, как бы вы справились с этой проблемой? Должен ли я добавить дополнительную информацию к файлу cookie сеанса? Или, может быть, лучшее решение?
Комментарии:
1. @Chase, для этого предполагается использовать поставщика профилей (точно так же, как поставщик членства для учетных записей). Почему что не будет работать?
2. Эти «статические переменные» хранятся в сеансе или на уровне приложения?
3. Microsoft не рекомендует использовать ProfileProvider для новых ASP.NET/MVC приложения: connect.microsoft.com/VisualStudio/feedback/details/595053 /…
4. @Joel: Теперь на уровне приложения.
5. @bzlm: А, спасибо, что разъяснил мне. Я попробую использовать пользовательский profileprovider. Спасибо и извините за оплошность!
Ответ №1:
Используйте ProfileProvider
в ASP.NET .
Комментарии:
1. Я был неправ по поводу моего предыдущего комментария! Ошибка, я имею в виду тестовый пост, пожалуйста, игнорируйте 😉
Ответ №2:
Что касается переменных уровня приложения, они будут подвергаться повторному использованию пула приложений и аналогичным «имитируемым» перезапускам, связанным с тем, что пользователи начинают все сначала. Эти переменные должны быть полностью независимы от использования пользователем и должны иметь возможность легко воссоздаваться. Если у вас есть переменные, которые зависят от пользователя или которые не могут быть легко восстановлены без какого-либо вмешательства извне, то вам определенно понадобится другой метод хранения.
Если данные зависят от пользователя, сохранение их в сеансовом cookie, вероятно, лучшая идея. Если данные связаны с пользователем, но относятся к нескольким пользователям, они должны храниться где-нибудь в базе данных или плоском файле. Если данные не имеют никакого отношения конкретно к пользователям, то они должны быть просто в базе данных или файле конфигурации.
Комментарии:
1. Ок, круто, значит, я должен найти методы, которые хранят информацию о сеансе, и переопределить их, да?
2. Сессия — не лучшее решение, потому что она не очень хорошо масштабируется
3. @Jenea: Я не уверен, что вы имеете в виду, говоря, что это не очень хорошо масштабируется. Что должно масштабироваться и как это должно масштабироваться?