authentication - ServiceStack - 防止未经授权访问静态文件

标签 authentication static authorization servicestack

我知道处理服务身份验证/授权的方法不止一种,但我无法让它对静态文件起作用。

是否有一种方法可以将行为配置为与服务相同?如果未通过身份验证,对 index.html 的请求应该重定向到登录页面,就像对安全 dto/服务的请求一样。

我目前正在研究 RawHttpHandlers,但由于在管道中还为时过早,我该如何在 apphost 配置中获取身份验证设置?

提前致谢 杰尔吉

最佳答案

您必须使用 IAppHost.RawHttpHandlers,因为这是 ServiceStack's Request Pipeline 中唯一的自定义处理程序在访问内置静态文件处理之前执行。

但是您仍然应该能够使用可用的扩展方法访问用户 session ,例如:

this.RawHttpHandlers.Add(httpReq =>
{
    var isStaticFileRequest = httpReq.PathInfo.StartsWith("/static");
    if (isStaticFileRequest)
    {
        var session = httpReq.GetSession();
        if (!session.HasRole("TheRole"))
            return new ForbiddenHttpHandler();
    }
    return null;
});

此处理程序只是检查它是否是对静态文件的请求,在这种情况下,路径信息以 /static 开头,如果是则检查用户 session 是否具有所需的角色,如果没有它返回一个 Forbidden 请求,否则它返回 null 告诉 ServiceStack 继续执行请求。

注意:如果需要,您可以使用 HostContext.Resolve 从 ServiceStack 外部访问任何已注册的依赖项,例如:

var authRepo = HostContext.Resolve<IAuthRepository>();

关于authentication - ServiceStack - 防止未经授权访问静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960231/

相关文章:

arrays - typescript 中的静态数组

java - 如何继承静态字段并更改它的值?

java - Apache MINA SFTP - 限制用户看到的目录结构

带有授权 header 的 JQuery 下载文件

azure - 为 VueJs 前端和 Azure 函数应用程序后端实现身份验证/授权的最佳方法是什么

使用数据库进行 Java 用户名和密码验证

authentication - 为tomcat添加用户认证

c++ - 类中定义的静态成员函数是否隐式内联?

facebook - 使用 facebook 登录我的网站

asp.net - IIS 与 ASP.NET 授权 - 保护静态文件的最简单方法?