首页 文章

请求上下文中的ServiceStack HasPermission

提问于
浏览
2

我正在尝试利用servicestack的身份验证和授权功能,这样我就不需要用这个来污染我的服务代码,这会导致更干净的测试等 .

在我的应用程序中,用户有权在特定上下文中执行某些操作 .

即用户只能查看其产品集中的产品 .

为了实现这一点,我考虑使用名为canView的权限属性来装饰我的productViewRequest dto,然后创建我自己的IAuthSession实现来检查用户是否在其允许的集合中请求产品 .

这会是一个体面的方法还是我咆哮错误的树?

假设这是一种正确的方法,我如何在会话实现的HasPermission调用中获取上下文,即productViewRequest对象?

谢谢你的帮助

1 回答

  • 1

    首先我会检查ServiceStack内置的auth选项https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization

    如果这不符合您的要求,请求过滤器属性将允许您访问请求上下文 .

    public class CanViewAttribute : RequestFilterAttribute {
        private readonly string permission;
    
        public CanViewAttribute(string permission) {
            this.permission = permission;
        }
    
        public override void Execute(IHttpRequest req, IHttpResponse res, object responseDto) {
            // todo: check permission
    
            if (!hasPermission) {
              res.StatusCode = (int)HttpStatusCode.Forbidden;
              res.EndRequest();
            }
        }
    }
    

相关问题