簡體   English   中英

ServiceStack - 使用內置身份驗證功能時訪問請求DTO?

[英]ServiceStack - Access to the request DTO when using the built-in auth feature?

我正在使用ServiceStack實現一個Web服務,並且已經獲得了授權。

我們的身份驗證系統提供了用戶擁有的“每個組織”權限列表,每個請求DTO都具有請求所屬的強制“OrganizationId”屬性。 只有當用戶具有該特定組織的相應權限時,才能滿足該請求。

ServiceStack中的授權回調(IsAuthorized,HasRole,HasPermission等)似乎不允許訪問請求DTO,這意味着我無法拔出OrganizationId進行身份驗證。 該服務是獨立運行的,因此我無法通過HttpContext,HostContext等訪問請求DTO。

我可以使用全局請求過濾器來實現我自己的auth層,但顯然更願意重新使用已經存在的內容,如果可能的話。 有沒有什么方法可以可靠,安全地訪問請求DTO,而無需重新發明ServiceStack已經提供的功能輪?

我看過的另一種方法是實現一個全局請求過濾器,以便將請求DTO添加到請求上下文的“Items”屬性,然后我可以從auth回調例程訪問它。 這不是最優雅的方法,感覺有點臟,但如果它完成了工作,我會咬緊牙關並實施它。 我希望有更好的方法。

您可以從IRequest.Dto屬性獲取當前的Request DTO,但這不會在UserSession HasRole()/HasPermission() API中注入。

用戶會話應設置該用戶所需的必要信息,因此理想情況下,組織ID將添加為自定義UserSession屬性。 但是,如果您需要檢查每個Request DTO,那么您需要在全局請求篩選器篩選器屬性中添加自己的自定義邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM