2

我正在尝试利用 servicestack 的身份验证和授权功能,这样我就不需要用它来污染我的服务代码,这应该会导致更清洁的测试等。

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

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

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

这是一个不错的方法还是我在找错树?

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

谢谢你的帮助

4

1 回答 1

1

首先,我将检查 ServiceStack 内置身份验证选项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();
        }
    }
}
于 2013-09-22T10:20:12.400 回答