我正在使用基于 Servicestack 的 API 编写服务和 ERP 软件。在请求过滤器属性中,我想通过评估给定服务的 ACL 来检查当前用户是否有权使用特定服务。在响应过滤器属性中,我想过滤服务的结果。背景:我公司的用户可以访问所有客户及其数据。然后我有属于客户的用户,这些用户可能只能看到他们公司的数据。因此,首先我必须评估用户是否有权访问所请求的服务 (CRUD),如果可以,我必须确定用户可能在 UI 中实际看到哪些结果数据。我已经像这样填充了我的 JWT:{ "iat": 1556223131, "exp": 1557432731, "preferred_username": "sa", "cwp_pid": "people/97-A", "cwp_bpid": "geschaeftspartners/481-A", "cwp_adm": "True", "cwp_su": "True"}在那些过滤器属性中,我需要访问我的声明 cwp_ 以运行我的响应过滤器,在请求过滤器中,我需要访问 cwp_pid(用户 ID)。
1 回答
繁星coding
TA贡献1797条经验 获得超4个赞
如果您使用的是ServiceStack 的 JWT Auth ProviderIRequest.GetJwtToken()
,您可以使用扩展方法在请求/响应过滤器中检索 JWT 令牌,例如:
GlobalRequestFilters.Add((req, res, dto) => {
string jwt = req.GetJwtToken();
var jwtProvider = AuthenticateService.GetRequiredJwtAuthProvider();
IAuthSession session = jwtProvider.ConvertJwtToSession(req, jwt);
JsonObject jwtPayload = jwtProvider.GetVerifiedJwtPayload(req, jwt.Split('.'));
});
从那里您可以将 JWT 令牌转换为用户会话或提取 JSON 有效负载,JsonObject如上所示的字典中。
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消