Я также обнаружил, что часто мне не нужны все функциональные возможности, предоставляемые в стандартных базах MembershipProvider. В настоящее время я склонен писать собственные легковесные методы для аутентификации и авторизации пользователей.
Обычно я следую этим указаниям:
- Установить режим проверки подлинности для форм в web.config
- Пользовательский класс для аутентификации пользователя и получения ролей для связанного идентификатора пользователя
- Форма входа для ручной выдачи FormsAuthenticationCookie (см. Пример ниже)
- Настройка элементов web.config в подкаталогах для запрета доступа к ролям
Ниже приведен пример кода, который вы можете использовать для самостоятельного создания FormsAuthenticationTicket, используя собственные легковесные методы для аутентификации и авторизации ваших пользователей:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
data.AccountId.ToString(),
DateTime.Now,
DateTime.Now.AddHours(24),
rememberMe,
data.ToString());
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (rememberMe)
cookie.Expires = DateTime.Now.AddDays(30);
HttpContext.Current.Response.Cookies.Add(cookie);
Это просто грубая идея, но помните, что все зависит от вас, используете ли вы MembershipProviders как есть, реализуете ли вы свои собственные, или же вы решаете отказаться от них полностью и создать свои собственные, предоставляя только те функции, которые вам необходимы. Я часто выбираю последний, просто потому, что многие приложения, которые я пишу, являются обновлениями от унаследованных систем, в которых уже есть членские базы данных и т. Д.
Надеюсь, это поможет.