c# - 请求上下文中的 ServiceStack HasPermission

标签 c# servicestack

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

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

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

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

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

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

谢谢你的帮助

最佳答案

首先我会检查 ServiceStack 内置的身份验证选项 https://docs.servicestack.net/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();
        }
    }
}

关于c# - 请求上下文中的 ServiceStack HasPermission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18930765/

相关文章:

c# - WPF ContentControl 无法从 ViewModel 解析正确的 View (Catel)

c# - 当以移动平台为 parent 时,角色移动缓慢

extjs - ServiceStack MiniProfiler Ajax 请求日志记录

c# - 在 JSON 反序列化期间将 int 转换为 bool

mono - 服务栈 : fastcgi-mono-server4 vs self-hosting

c# - 使用 ServiceStack 返回具有特定状态代码的自定义 DTO 的选项有哪些?

asp.net - 有没有办法使用 ASP.NET Identity 授权服务堆栈?

c# - 如何在 C# 控制台中读取用户输入

C# Entity Framework - Order by and Take

c# - 如何在 Linq To Sql 中执行 WHERE...IN... 子句?