servicestack,Authentication,Static,Authorization,servicestack" /> servicestack,Authentication,Static,Authorization,servicestack" />

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

Authentication ServiceStack-防止未经授权访问静态文件,authentication,static,authorization,servicestack,Authentication,Static,Authorization,servicestack,我知道处理服务身份验证/授权的方法不止一种,但我无法使其适用于静态文件 是否有方法将行为配置为与服务相同;如果未通过身份验证,则对index.html的请求应重定向到登录页面,与对安全dto/service的请求相同 我目前正在研究RawHttpHandlers,但由于它在管道中还为时过早,如何在apphost配置中获得身份验证设置 提前谢谢 Gjergji您必须使用IAppHost.RawHttpHandlers,因为这是中唯一在访问内置静态文件处理之前执行的自定义处理程序 但您仍应能够使用可

我知道处理服务身份验证/授权的方法不止一种,但我无法使其适用于静态文件

是否有方法将行为配置为与服务相同;如果未通过身份验证,则对index.html的请求应重定向到登录页面,与对安全dto/service的请求相同

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

提前谢谢
Gjergji

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

但您仍应能够使用可用的扩展方法访问用户会话,例如:

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
开头,如果是,则检查用户会话是否具有所需角色,如果不是,则返回禁止的请求,否则返回
null
以通知ServiceStack继续执行请求

注意:如果需要,您可以使用主机上下文从ServiceStack外部访问任何已注册的依赖项。解决,例如:

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