2017-08-08 42 views
1

我正在使用ServiceStack開發大型API表面,並且正在解決授權問題。最終用戶需要能夠在API請求級別定製賦予各種角色的權限,即。其中請求角色可以調用的消息/ http動詞。ServiceStack API中的細粒度授權

由於這個原因,我打算讓角色脫離代碼而不使用ServiceStack的RequiresRole屬性。我計劃將角色/權限關係存儲在數據庫中。

我也使用智威湯遜。由於API的大小,我很擔心在ServiceStack的內置權限系統中使用RequiresPermission屬性,因爲我知道權限在JWT中填充,我不會過多膨脹頭部。用戶可能擁有數百甚至數千的權限。

我正在考慮

1)存儲用戶角色的權利要求,但在JWT不同意索賠。
2)創建一個自定義請求過濾器,根據它們在JWT中的角色檢查用戶是否具有所需的權限(來自緩存的數據庫表)。

這聽起來像是在ServiceStack中實現我的授權需求的合理方法嗎?我可能會缺少什麼缺點?有沒有辦法使用內置的ServiceStack授權工具來實現我的目標,而無需訴諸自定義請求過濾器或膨脹我的JWT太多?

回答

1

是的,這聽起來像是一種合理的方法,如果您使用JWT,您應該注意用戶具有的角色/權限數量,因爲它影響每個請求的有效負載大小,因此訴諸使用應用程序級權限與ServiceStack的角色/權限斷開連接是一種好方法。