2017-10-09 146 views
1

我正在學習如何使用角色和聲明的教程。首先,它TEACHED使用角色的話,除其他事項外,我不得不把線下的ApplicationUserManager.cs代碼:做了角色註釋。但索賠註釋是如何的?

public const string Administrator = "Admin"; 

由於該項目的想法是IMDB頁面,只有管理員可以創建新的電影的流派,我不得不把註釋

[Authorize(Roles = ApplicationUserManager.Administrator)] /* role annotation */ 
    [HttpPost] 
    [Route("Api/Genres")] 
    public async Task<IHttpActionResult> PostAsync(GenrePostRequest request) 
    { 
     using (var db = new ApplicationDbContext()) 
     { 
      await Genre.CreateAsync(request.Name, GetUserId(), db, Request.GetOwinContext().GetUserManager<ApplicationUserManager>()); 
      return Ok(); 
     } 
    } 

POST功能之前,對GenreController.cs如上圖所示。一切正常。一切都很好。現在,本教程說在ApplicationUserManager.cs代碼添加這兩條線:

public const string IsAdminClaim = "IsAdmin"; 
    public const string IsAdminClaimValue = "True"; 

,所以我可以用索賠。

教程現在說「更新GenreController的創建行動,使用與指定要求創建的註釋。

我知道那裏的GenreController的創建行動,但索賠的註釋應該是怎樣的樣子?

我知道我有一個名爲AuthorizationAttribute.cs類,看起來像它:

public class AuthorizationAttribute : AuthorizationFilterAttribute 
{ 
    public string ClaimType { get; set; } 
    public string ClaimValue { get; set; } 

    public AuthorizationAttribute(string claimType, object claimValue) 
    { 
     this.ClaimType = claimType; 
     this.ClaimValue = claimValue.ToString(); 
    } 
    public override Task OnAuthorizationAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken) 
    { 
     /* some codes */ 
    } 
} 

回答

0

解決了! 我試圖使用授權,就像角色不同的變化,但如果索賠建設是類有類似的構造:

public AuthorizationAttribute(string claimType, object claimValue) 
{ 
    this.ClaimType = claimType; 
    this.ClaimValue = claimValue.ToString(); 
} 

如圖所示的問題,不是正確的註釋是:

[Authorization(ApplicationUserManager.IsAdminClaim, ApplicationUserManager.IsAdminClaimValue)] 

即,使用授權,而不是授權