Аутентификация ServiceStack Razor

Я смотрю пример Rockstars и ServiceStack.Razor.

Как мне настроить аутентификацию на, скажем, в файле secure.cshtml. Поэтому я могу перенаправить пользователя в Login.cshtml, если это необходимо.

Я понимаю только из примера SocialBootstrapApi, если я смешиваю MVC hybird, я могу поместить [authenticate ()] в ServiceStackController для достижения этого.

Но что, если я просто хочу чистый проект SS без .net MVC?

Атрибут Authenticate – это простой атрибут фильтра запроса ServiceStack , то есть он работает как в MVC, так и в ServiceStack.

Применение этого фильтра возвращает 401 UnAuthorized ответ для всех не-HTML-запросов. например, если вы вызвали это с помощью Ajax, вы можете обнаружить этот ответ об ошибке и сделать redirect на клиенте.

Из v3.9.23 + из ServiceStack атрибут [Authenticate] автоматически перенаправит все ошибки аутентификации на URL ~/login по умолчанию.

Вы можете переопределить этот URL-адрес при регистрации AuthFeature, например:

 Plugins.Add(new AuthFeature(...) { HtmlRedirect = "/path/to/my/login" }); 

Который применит глобально ко всем атрибутам [Authenticate] или вы можете переопределить это на основе adhoc:

 [Authenticate(HtmlRedirect="/path/to/my/login")] 

Примечание. Атрибуты наследуются, поэтому вы можете добавить это один раз в class SecuredService, и все подclassы наследуют его поведение.

Перенаправление вручную

Чтобы перенаправить запрос UnAuthorized HTML вручную, вы можете выполнить собственную проверку + redirect с помощью:

 public object Secured(Request request) { if (!base.SessionAs().IsAuthenticated) return new HttpResult(HttpStatusCode.Redirect, "Un Authorized") { Headers = { {"Location", "/path/to/login" } } }; } 

Существует также сухая обертка вокруг вышеупомянутого перенаправления, которую вы можете использовать вместо этого:

 public object Secured(Request request) { if (!base.SessionAs().IsAuthenticated) return HttpResult.Redirect("/path/to/login"); }