2016-12-16 147 views
1

如果我有兩個.net核心WebApi控制器,AdminController和UserController(在一個項目中)。並且都需要授權,那麼我怎樣才能將它們設置爲IdentityServer4中的兩個範圍,以便Admin用戶可以訪問這兩個控制器,但簡單的用戶無法訪問管理員控制器,而僅訪問簡單的用戶控制器?我的客戶是Angular 2類型的。是否有任何示例還顯示基於角色的授權? 謝謝,特立獨行IdentityServer4中基於角色的WebApi控制器授權?

回答

1

不是你的問題的確定性答案可能(因爲它不涉及2範圍) - 但它可能會導致你的某個地方。

林假設你使用TokenValidation middleware,你的API是使用IdentityServerAuthentication

你可以有一個角色要求,這表明什麼樣的作用用戶(即用戶,管理員)設置。 然後,您可以使用[Authorize(Roles="admin")]屬性檢查admin api的角色,對於用戶api,只需使用[Authorize]即可確保用戶已登錄,或將這兩個角色指定爲逗號分隔列表([Authorize(Roles="admin,user")])如果需要的話。

即:

[Authorize(Roles="Admin")] 
public class AdminController : ApiController 
{ 

這是對授權文檔的鏈接屬性爲.NET核心:

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles