首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStack剃刀身份验证

ServiceStack剃刀身份验证
EN

Stack Overflow用户
提问于 2012-09-28 21:08:05
回答 1查看 2.2K关注 0票数 7

我正在看摇滚之星的例子和ServiceStack.Razor。

例如,如何将身份验证应用到secure.cshtml页面中。因此,如果需要,我可以将用户重定向到Login.cshtml。

我只从SocialBootstrapApi示例了解到,如果我混合了MVC hybird,我可以在ServiceStackController中使用authenticate()来实现这一点。

但是如果我只想要一个没有.net MVC的纯SS项目呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,例如:

代码语言:javascript
复制
Plugins.Add(new AuthFeature(...) { HtmlRedirect = "/path/to/my/login" });

它将全局应用于所有[Authenticate]属性,或者您可以使用以下命令临时覆盖此属性:

代码语言:javascript
复制
[Authenticate(HtmlRedirect="/path/to/my/login")]

注意:属性是可继承的,因此您只需将其添加到SecuredService类中一次,所有子类都将继承其行为。

手动重定向

要手动重定向UnAuthorized HTML请求,您可以使用以下命令进行自己的检查+重定向:

代码语言:javascript
复制
public object Secured(Request request) {
    if (!base.SessionAs<MyCustomSession>().IsAuthenticated)
        return new HttpResult(HttpStatusCode.Redirect, "Un Authorized") { 
           Headers = { {"Location", "/path/to/login" } } };
}

上面的重定向还有一个干式包装器,你可以用它来代替:

代码语言:javascript
复制
public object Secured(Request request) {
    if (!base.SessionAs<MyCustomSession>().IsAuthenticated)
        return HttpResult.Redirect("/path/to/login");
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12640653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档