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 */
}
}