2017-04-05 23 views
0

我見過的所有教程教你如何只通過添加如何在aspnet核心中的代碼中驗證用戶的再次策略?

[Authorize(Policy = "admin")] 

到控制器或行動來保護作用。

但是,我不需要拋出錯誤,我需要返回到瀏覽器(在json中)如果有人是「管理員」的問題的答案,並且沒有任何來源說明如何執行該操作。 是的,你可以檢查聲明(User.HasClaim),但策略是由多個聲明組成的。

那麼我該怎麼做?

回答

2

在您的控制器的構造函數中,您可以取決於IAuthorizationService authorizationService的依賴性來注入它。然後,你可以用它來檢查用戶是否符合這樣的政策:

var isAuthorized = await authorizationService.AuthorizeAsync(User, "admin"); 

其中,「管理」是政策的

+0

你能告訴我怎麼去ClaimsPrincipal任何用戶名的名稱,請? – doker

+0

HttpContext.User或者只是用戶是聲明主體,假設控制器從ControllerBase繼承,它在控制器內部是可用的。這是請求的當前用戶,根據用戶名獲取其他用戶取決於您的實現如何從數據庫獲取用戶信息,然後將其轉換爲claimsprincipal是另一個任務。 –

+0

正好我們有AD用戶。如何從這些創建claimprinciple? – doker

相關問題