Вы можете использовать экранирующие символы оболочки, доступные на любом языке. Эти escape-символы начинаются с символа ESC, за которым следует ряд аргументов.
Например, для вывода красной строки Hello world
в вашем терминале:
echo "\e[31m Hello world \e[0m"
Или из скрипта на python:
print("\e[31m Hello world \e[0m")
Кроме того, я написал статью о Побег последовательности , которые могут помочь вам лучше понять этот механизм. Я надеюсь, что это поможет вам.
Это хороший вопрос, и я боролся с ним. Я думаю, есть три основных подхода:
Использование поставщика профиля - это упрощает добавление свойств, но обременительно для таких вещей, как создание таблицы пользователей, особенно если вам нужно применять фильтры / поиск. API просто не сокращает его.
Добавьте новую таблицу (или расширьте существующую), а затем присоединитесь к ней. Затем вам нужно будет написать свои собственные методы для возврата пользовательских данных.
Напишите свой собственный поставщик членства, расширяющий класс MembershipProvider.
В моем последнем проекте я использовал второй подход - я написал очень быстрый поставщик SQL в котором реализовано только самое необходимое для создания пользователей, аутентификации и изменения паролей. Для остальных виртуальных методов я просто выбросил NotImplementedException
.
Затем я добавил новый класс, который добавил дополнительные свойства, которые мне были нужны, и сделал его так, чтобы его можно было создать, передав стандартный MembershipUser
. Примерно так:
public static CustomMember GetMember(MembershipUser user)
{
// Get your custom member
}
Таким образом, вы можете использовать стандартный MembershipUser для большинства вещей, но если вам нужно получить более подробную информацию о текущем пользователе, вы делаете что-то вроде этого:
MembershipUser user = Membership.GetUser();
CustomMember member = CustomMember.GetMember(user);
Мне было бы интересно узнать, что другие люди ' подходы есть, правда.
Тот факт, что вы используете MVC, не должен иметь существенного влияния на то, как вы работаете с членством и «пользовательскими данными».
Я также обычно избегаю профилей ASP.NET, и действительно членство в ASP.NET по умолчанию, предпочитаю использовать моего собственного поставщика членства и схему «профиля», связанную с моей существующей таблицей пользователей.
Оставьте комментарий, если вас интересует дополнительная информация о поставщиках членства клиентов.
Я бы хотел увидеть больше отзывов на эту тему и то, что люди делают. В настоящее время я использую стандартную систему asp.net membership / role provider в приложении asp.net mvc и она мне не очень нравится.
Мой подход заключался в изменении таблицы aspnet_users и добавлении целой кучи дополнительных столбцов; CompanyId, StreetAddress и т.д.
В стандартном профиле я сохранил настройки профиля пользователей для того, как они используют сайт; какую тему они используют, сколько записей отображается в постраничных списках и другие вещи.
Как и большинство людей, получение информации в профиле и из профиля - это мучение, и, как я читал, в больших системах это может стать узким местом в производительности из-за сериализации.
Я склоняюсь к тому, чтобы развернуть свои таблицы, которые лучше соответствуют схеме моего приложения, реализовать пользовательский sql-провайдер и затем рассмотреть возможность написания дополнительных атрибутов безопасности в asp.net mvc, если они мне понадобятся.