我正在看摇滚之星的例子和ServiceStack.Razor。
例如,如何将身份验证应用到secure.cshtml页面中。因此,如果需要,我可以将用户重定向到Login.cshtml。
我只从SocialBootstrapApi示例了解到,如果我混合了MVC hybird,我可以在ServiceStackController中使用authenticate()来实现这一点。
但是如果我只想要一个没有.net MVC的纯SS项目呢?
发布于 2012-09-28 22:21:23
Authenticate属性只是一个普通的ServiceStack Request Filter Attribute,也就是说,它可以在MVC和ServiceStack中工作。
应用此筛选器将为所有非请求返回HTML401 UnAuthorized响应。例如,如果你用Ajax调用它,你可以检测到这个错误响应并在客户机上进行重定向。
默认情况下,从ServiceStack的v3.9.23+中,[Authenticate]属性会自动将所有身份验证错误重定向到~/login url。
您可以在注册AuthFeature时覆盖此url,例如:
Plugins.Add(new AuthFeature(...) { HtmlRedirect = "/path/to/my/login" });它将全局应用于所有[Authenticate]属性,或者您可以使用以下命令临时覆盖此属性:
[Authenticate(HtmlRedirect="/path/to/my/login")]注意:属性是可继承的,因此您只需将其添加到SecuredService类中一次,所有子类都将继承其行为。
手动重定向
要手动重定向UnAuthorized HTML请求,您可以使用以下命令进行自己的检查+重定向:
public object Secured(Request request) {
if (!base.SessionAs<MyCustomSession>().IsAuthenticated)
return new HttpResult(HttpStatusCode.Redirect, "Un Authorized") {
Headers = { {"Location", "/path/to/login" } } };
}上面的重定向还有一个干式包装器,你可以用它来代替:
public object Secured(Request request) {
if (!base.SessionAs<MyCustomSession>().IsAuthenticated)
return HttpResult.Redirect("/path/to/login");
}https://stackoverflow.com/questions/12640653
复制相似问题