我正在使用基于 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 關注
- 92 瀏覽
添加回答
舉報
0/150
提交
取消