Как делают меня текст вывода цвета из сценария Perl в Windows?

В Web API появился атрибут [Authorize] для обеспечения безопасности. Это может быть установлено глобально (global.asx)

public static void Register(HttpConfiguration config)
{
    config.Filters.Add(new AuthorizeAttribute());
}

Или для контроллера:

[Authorize]
public class ValuesController : ApiController{
...

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

public class DemoAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if (Authorize(actionContext))
        {
            return;
        }
        HandleUnauthorizedRequest(actionContext);
    }

    protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var challengeMessage = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
        challengeMessage.Headers.Add("WWW-Authenticate", "Basic");
        throw new HttpResponseException(challengeMessage);
    }

    private bool Authorize(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        try
        {
            var someCode = (from h in actionContext.Request.Headers where h.Key == "demo" select h.Value.First()).FirstOrDefault();
            return someCode == "myCode";
        }
        catch (Exception)
        {
            return false;
        }
    }
}

И в вашем контроллере:

[DemoAuthorize]
public class ValuesController : ApiController{

Вот ссылка на другую пользовательскую реализацию для авторизаций WebApi:

http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-membership-provider/

10
задан brian d foy 5 November 2009 в 16:12
поделиться

3 ответа

Для любого терминала, поддерживающего escape-коды ANSI вы можете использовать пакет Term :: ANSIColor , доступный на CPAN.

Со страницы Википедии:

Окна консоли в версиях Windows на базе NT (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008) не поддерживают ANSI Escape последовательности, хотя некоторая поддержка возможно.

Не знаю больше информации, относящейся к Windows, чем эта, я парень POSIX. : -)

13
ответ дан 3 December 2019 в 14:06
поделиться

Win32 :: Console - вот пример

use Win32::Console;
my $CONSOLE = Win32::Console->new(STD_OUTPUT_HANDLE);
my $attr = $CONSOLE->Attr(); # Get current console colors
$CONSOLE->Attr($FG_YELLOW | $BG_GREEN); # Yellow text on green

print "This is a test\n";

$CONSOLE->Attr($attr); # Set console colors back to original
15
ответ дан 3 December 2019 в 14:06
поделиться
system("color A"); #DOS command, change text color to lime

system("color 7"); #DOS command, change text color to white

Однако эти команды изменяют цвет текста на всем экране. Введите "color ?" в окне DOS, чтобы увидеть варианты цвета

Я использую клубничный perl в Windows и у меня не было пакета Win32::Console. Чтобы установить этот пакет, введите в консоли:

perl -MCPAN -e shell

install Win32::Console

exit

1
ответ дан 3 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

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