API поставщика членства asp.net. удобство использования. лучшая практика

Поставщики членства/Роли/Профиля API появились в первые годы asp.net

Почти каждый раз я не могу жить со стандартным API и иметь для добавления некоторой дополнительной функциональности (для сортировки, получая e.t.c.). Я также должен часто использовать другую структуру базы данных (с внешним ключом к некоторым таблицам, например) или думать о повышениях производительности.

Эти соображения вынудили команды, в которых я принял участие создать собственных поставщиков, но я не могу выдержать реализовать поставщиков API (потому что мы не используем 70% стандартной функциональности, по крайней мере). Кроме того, поставщики, которые были созданы для точных проектов, редко снова использовались.

Интересно, нашел ли кто-то швейцарский нож реализацией поставщиков API первых лет, которая полезна для любого вида проекта без рефакторинга... Или Вы используете свои собственные реализации API первых лет Или можете быть Вами, отказываются от стандартной архитектуры и используют легкие реализации?

Заранее спасибо

1
задан Andrew Florko 10 May 2010 в 20:11
поделиться

1 ответ

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

Обычно я следую следующим рекомендациям:

  • Установите режим аутентификации Forms в web.config
  • Пользовательский класс для аутентификации пользователя и получения ролей для связанного с ним UserId
  • Форма входа для ручной выдачи 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 как есть, реализуете ли вы свои собственные, или вы решите отказаться от них вообще и создать свои собственные, обеспечивающие только необходимую вам функциональность. Я часто выбираю последнее, просто потому что многие приложения, которые я пишу, являются модернизацией устаревших систем, в которых уже есть базы данных членства и т.д.

Надеюсь, это поможет.

2
ответ дан 3 September 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: