Соединение дополнительной информации с ASP.NET Членство MVC

Вы можете использовать экранирующие символы оболочки, доступные на любом языке. Эти escape-символы начинаются с символа ESC, за которым следует ряд аргументов.

Например, для вывода красной строки Hello world в вашем терминале:

echo "\e[31m Hello world \e[0m"

Или из скрипта на python:

print("\e[31m Hello world \e[0m")

Кроме того, я написал статью о Побег последовательности , которые могут помочь вам лучше понять этот механизм. Я надеюсь, что это поможет вам.

14
задан Dkong 29 July 2009 в 08:32
поделиться

3 ответа

Это хороший вопрос, и я боролся с ним. Я думаю, есть три основных подхода:

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

  2. Добавьте новую таблицу (или расширьте существующую), а затем присоединитесь к ней. Затем вам нужно будет написать свои собственные методы для возврата пользовательских данных.

  3. Напишите свой собственный поставщик членства, расширяющий класс MembershipProvider.

В моем последнем проекте я использовал второй подход - я написал очень быстрый поставщик SQL в котором реализовано только самое необходимое для создания пользователей, аутентификации и изменения паролей. Для остальных виртуальных методов я просто выбросил NotImplementedException .

Затем я добавил новый класс, который добавил дополнительные свойства, которые мне были нужны, и сделал его так, чтобы его можно было создать, передав стандартный MembershipUser . Примерно так:

public static CustomMember GetMember(MembershipUser user)
{
    // Get your custom member
}

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

MembershipUser user = Membership.GetUser();
CustomMember member = CustomMember.GetMember(user);

Мне было бы интересно узнать, что другие люди ' подходы есть, правда.

10
ответ дан 1 December 2019 в 15:02
поделиться

Тот факт, что вы используете MVC, не должен иметь существенного влияния на то, как вы работаете с членством и «пользовательскими данными».

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

Оставьте комментарий, если вас интересует дополнительная информация о поставщиках членства клиентов.

1
ответ дан 1 December 2019 в 15:02
поделиться

Я бы хотел увидеть больше отзывов на эту тему и то, что люди делают. В настоящее время я использую стандартную систему asp.net membership / role provider в приложении asp.net mvc и она мне не очень нравится.

Мой подход заключался в изменении таблицы aspnet_users и добавлении целой кучи дополнительных столбцов; CompanyId, StreetAddress и т.д.

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

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

Я склоняюсь к тому, чтобы развернуть свои таблицы, которые лучше соответствуют схеме моего приложения, реализовать пользовательский sql-провайдер и затем рассмотреть возможность написания дополнительных атрибутов безопасности в asp.net mvc, если они мне понадобятся.

0
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

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