поставщик членства asp.net api. юзабилити. передовая практика - PullRequest
1 голос
/ 11 мая 2010

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

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

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

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

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

1 Ответ

2 голосов
/ 11 мая 2010

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

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

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