当前位置:  开发笔记 > 编程语言 > 正文

ServiceStack Razor身份验证

如何解决《ServiceStackRazor身份验证》经验,为你挑选了1个好方法。

我正在查看Rockstars示例和ServiceStack.Razor.

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

我只从SocialBootstrapApi例子中了解如果我混合使用MVC hybird,我可以将[authenticate()]放在ServiceStackController上来实现.

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



1> mythz..:

在身份验证属性只是一个简单的ServiceStack 请求过滤属性,也就是说,它工作在两个MVC和ServiceStack.

应用此过滤器将为所有非HTML请求返回401 UnAuthorized响应.例如,如果您使用Ajax调用此方法,则可以检测到此错误响应并在客户端上执行重定向.

从v3.9.23 + ServiceStack,该[Authenticate]属性~/login默认会自动将所有身份验证错误重定向到url.

您可以在注册AuthFeature时覆盖此URL,例如:

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

这将全局应用于所有[Authenticate]属性,或者您可以在adhoc基础上覆盖此属性:

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

注意:属性是可继承的,因此您可以将此属性添加一次到SecuredService类,并且所有子类都将继承其行为.

手动重定向

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

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

上面的重定向还有一个DRY包装器,您可以使用它:

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

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有