В 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/
Для любого терминала, поддерживающего 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. : -)
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
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