Альтернативы .Net Членство - PullRequest
19 голосов
/ 31 марта 2009

Есть ли альтернативы \ моды членству .net?

Я считаю это довольно ограничительным;

  • Не могу изменить имя пользователя, легко. Вы должны создать нового пользователя и скопировать поля, но затем вы потеряете первичный ключ ИЛИ вам придется самостоятельно редактировать таблицу пользователей.

  • Дополнительные поля профиля хранятся вместе как один BLOB-объект.

Ответы [ 5 ]

13 голосов
/ 31 марта 2009

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

.

Плюс еще один вопрос о существующих альтернативах, а не попытка создать что-то новое самостоятельно.

8 голосов
/ 06 июля 2011

Я пойду дальше и перечислю свою альтернативу здесь. Я свернул свою собственную библиотеку аутентификации, и я думаю, что это достаточно здорово, чтобы быть публично выпущенным ... Так я и сделал. Он создан, чтобы не мешать вам, и в целом он довольно минималистичен. Я не предоставляю много готовых пользовательских элементов управления, но на большинстве веб-сайтов, которые я видел, эти встроенные пользовательские элементы управления никогда не используются. Таким образом, вместо того, чтобы пытаться сделать еще более гибкие пользовательские элементы управления, я решил вместо этого сделать простой и понятным создание собственных элементов управления для входа и тому подобного.

Проект называется Быстрая, Безопасная и Краткая Аутентификация, или сокращенно FSCAuth. Это BSD лицензируется. Вы можете скачать его на Binpress или на Bitbucket

Это гибкая модель «UserStore» (эквивалент поставщика по форме) позволяет вам формировать базу данных в любом месте. Он может поддерживать простые текстовые файлы, XML, MongoDB , Sql Server и любые промежуточные.

Вот список вещей, которые, на мой взгляд, особенно превосходят проверку подлинности с помощью форм:

  • Система аутентификации без сохранения состояния. Нет необходимости отслеживать пользовательские сеансы в базе данных или в памяти. Это упрощает масштабирование до нескольких серверов, требующих нескольких (если таковые имеются) изменений в вашем коде аутентификации
  • Использовать что-либо в качестве уникального идентификатора для каждого пользователя. Это верно, больше нет GUID! Все, что поместится в строку, является честной игрой
  • Запущена базовая HTTP-аутентификация. Вы можете включить базовую аутентификацию только на страницах, которые вы хотите (или глобально), и вы можете делать те же вызовы, как если бы они использовали типичную аутентификацию на основе файлов cookie
  • Трудно сделать небезопасным. Из-за того, как это работает, и я оставляю как можно меньше кода ядра конечному пользователю для выполнения аутентификации, он чрезвычайно безопасен и останется таким, если вы просто не попытаетесь его сломать. Я обрабатываю куки, HTTP Basic Auth и все хеширование. Вы просто предоставляете FSCAuth базу данных, чтобы вставить ее.
  • BCrypt поддержка хэшей тривиальна. Как это сделать. . В Аутентификации по формам это почти невозможно
  • Мне это нравится :)

Конечно, этого тоже не хватает, и, если честно, я добавлю несколько вещей, которых не хватает

  • Аутентификация статических файлов в IIS 6 невозможна (пока)
  • Предотвращение грубой силы (пока) отсутствует. Это означает, что вам нужно убедиться, что один и тот же человек не пытается зайти на вашу страницу входа 200 раз за 2 секунды.
  • Он не встроен в ASP.Net
  • Нет аутентификации Windows или Passport (без планов добавления)
2 голосов
/ 31 марта 2009

Поскольку модель членства ASP.NET построена вокруг провайдеров, существует ряд доступных альтернатив.

По умолчанию у пользователей есть ProviderUserKey, который является GUID, и это первичный ключ базы данных, поэтому вы можете написать что-нибудь, чтобы изменить их имя пользователя, если хотите.

С точки зрения профиля, да, BLOB-объект по умолчанию довольно раздражает. Вы можете взглянуть на поставщика профилей таблиц SQL , который сопоставляет профили с таблицами, или довольно быстро свернуть свой собственный .

0 голосов
/ 31 марта 2009

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

Что касается других вопросов, вы также можете реализовать своего собственного провайдера. Microsoft передала исходный код поставщикам SQL, чтобы он мог дать вам отправную точку.

0 голосов
/ 31 марта 2009

Что касается изменения имени пользователя, этого легко достичь, используя метод CreateNewUser () и заполнив соответствующие поля на основе текущего пользователя, а затем удалив текущего пользователя.

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

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

...