Альтернативы членству в .Net
Есть ли альтернативы \mods для .net Membership?
Я считаю это довольно ограничительным;
-
Невозможно изменить имя пользователя, легко. Вы должны создать нового пользователя и скопировать поля, но затем вы потеряете первичный ключ ИЛИ вам нужно самостоятельно отредактировать таблицу пользователя.
-
Дополнительные поля профиля сохраняются вместе как один blob.
Ответы
Ответ 1
Членство в ASP.Net использует модель поставщика. Это означает, что вы полностью свободны реализовать свой собственный поставщик членства или даже наследовать и расширять существующего поставщика, если вы следуете поставщику услуг.
Плюс один, чтобы рассказать о существующих альтернативах, а не пытаться создать что-то новое самостоятельно.
Ответ 2
Я расскажу о своей альтернативе. Я развернул свою собственную библиотеку аутентификации, и я думаю, что это достаточно просто, чтобы публично выпустить... Так что я и сделал. Он разработан, чтобы держаться подальше от вашего пути и в целом, это довольно минималистично. Я не предоставляю много элементов управления пользователя, но на большинстве веб-сайтов я видел, что встроенные пользовательские элементы управления никогда не используются. Поэтому вместо того, чтобы пытаться сделать еще более гибкие пользовательские элементы управления, я решил вместо этого сделать мозг простым, чтобы создать свои собственные элементы управления входами и т.д.
Проект называется Fast, Secure и Concise Authentication, или FSCAuth для краткости. Это лицензия BSD. Вы можете загрузить его через Binpress или Bitbucket
Гибкая модель "UserStore" (эквивалент поставщика услуг) позволяет вам в любом случае формировать вашу базу данных. Он может поддерживать текстовые файлы, XML, MongoDB, Sql Server, и где угодно между ними.
Вот список вещей, где, по моему мнению, он особенно отличается от проверки подлинности:
- Система аутентификации без гражданства. Нет необходимости отслеживать пользовательские сеансы в базе данных или в памяти. Это делает тривиальным масштабирование до нескольких серверов, требующих незначительных (если есть) изменений в вашем коде аутентификации.
- Используйте что-либо как уникальный идентификатор для каждого пользователя. Это право, не больше GUID! Все, что будет вписываться в строку, - это честная игра.
- Исходная базовая аутентификация HTTP. Вы можете включить базовую проверку подлинности только на желаемых страницах (или в глобальном масштабе), и вы можете делать те же вызовы, как если бы они использовали типичную аутентификацию на основе файлов cookie
- Трудно сделать небезопасным. Из-за того, как это работает, и я оставляю как можно меньше основного кода для конечного пользователя для фактической проверки подлинности, он чрезвычайно безопасен и останется таким, если только вы просто не попытаетесь его сломать. Я обрабатываю файлы cookie, HTTP Basic Auth и все хэширование. Вы просто даете FSCAuth базу данных для ее ввода.
- Поддержка хэшей BCrypt тривиальна. Как это сделать.. В Autodesk Forms почти невозможно
- Мне нравится:)
Конечно, этого также не хватает, и, честно говоря, я расскажу о нескольких вещах, которые отсутствуют
- Аутентификация статических файлов в IIS 6 пока не представляется возможным.
- Нет никакой грубой силы (пока). Это означает, что вам нужно убедиться, что один и тот же человек не пытается попасть на страницу входа 200 раз за 2 секунды.
- Он не встроен в ASP.Net
- Нет аутентификации в Windows или Passport (без каких-либо планов)
Ответ 3
Поскольку модель членства ASP.NET построена вокруг поставщиков, существует ряд альтернатив.
По умолчанию у пользователей есть ProviderUserKey, который является GUID, и что основной ключ базы данных, поэтому вы можете написать что-то, чтобы изменить свое имя пользователя, если хотите.
С точки зрения профиля, да, по умолчанию blob довольно раздражает. Вы можете посмотреть Поставщик профилей таблиц SQL, который отображает профили на таблицы или довольно быстро сканируйте свой собственный.
Ответ 4
Что касается изменения имени пользователя, это может быть легко достигнуто с помощью метода CreateNewUser() и заполнения соответствующих полей на основе текущего пользователя, а затем удаления текущего пользователя.
Поля профиля не являются частью модели .NET Membership Provider, а являются частью Провайдера профилей. Это очень дискуссионная тема, и для большинства производственных машин правильным решением является переход на более качественное решение поставщика услуг, например Поставщик профилей таблицы, в котором хранятся поля профиля, как вы ожидали, а не как blob-hogging. Кроме того, вы можете легко свернуть собственный поставщик профилей, ознакомьтесь с инструкциями .
Есть, конечно, альтернативы .NET Membership, но большинство из них ошибочно или имеют небольшой набор функций. Это действительно отстой, чтобы развиваться на вершине одного в течение двух месяцев, а затем осознать, что он не будет поддерживать все необходимые функции..NET Membership - это проверенное решение и почему оно используется так часто.
Ответ 5
Что касается профиля, есть пара альтернатив . Эти два используют либо таблицу, либо вы можете вызвать хранимую процедуру. Конечно, вы также можете реализовать свои собственные. Я лично устал от использования Провайдеров профилей и обнаружил, что работать с профилем в моем коде было легче контролировать и содержать.
Что касается других проблем, вы также можете реализовать своего собственного провайдера. Microsoft выпустила исходный код для поставщиков SQL, чтобы он мог дать вам отправную точку.