我正在使用基于 Servicestack 的 API 編寫服務(wù)和 ERP 軟件。在請(qǐng)求過濾器屬性中,我想通過評(píng)估給定服務(wù)的 ACL 來檢查當(dāng)前用戶是否有權(quán)使用特定服務(wù)。在響應(yīng)過濾器屬性中,我想過濾服務(wù)的結(jié)果。背景:我公司的用戶可以訪問所有客戶及其數(shù)據(jù)。然后我有屬于客戶的用戶,這些用戶可能只能看到他們公司的數(shù)據(jù)。因此,首先我必須評(píng)估用戶是否有權(quán)訪問所請(qǐng)求的服務(wù) (CRUD),如果可以,我必須確定用戶可能在 UI 中實(shí)際看到哪些結(jié)果數(shù)據(jù)。我已經(jīng)像這樣填充了我的 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_ 以運(yùn)行我的響應(yīng)過濾器,在請(qǐng)求過濾器中,我需要訪問 cwp_pid(用戶 ID)。
1 回答

繁星coding
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您使用的是ServiceStack 的 JWT Auth ProviderIRequest.GetJwtToken()
,您可以使用擴(kuò)展方法在請(qǐng)求/響應(yīng)過濾器中檢索 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 令牌轉(zhuǎn)換為用戶會(huì)話或提取 JSON 有效負(fù)載,JsonObject如上所示的字典中。
- 1 回答
- 0 關(guān)注
- 96 瀏覽
添加回答
舉報(bào)
0/150
提交
取消