.net core authorize Roles 不使用 magic string
.net core authorize Roles do not use magic string
这是我的代码。但不起作用
[Authorize(Roles = nameof(SD.ROLE_ADMIN))]
[HttpPost]
public async Task<IActionResult> DeleteUserAsync([FromBody] ManagementUserRequestDTO requestDTO)
{
var responseDTO = await _accountRepository.DeleteUser(requestDTO);
if (responseDTO.IsSucceeded)
return Ok(responseDTO);
return BadRequest(responseDTO);
}
如果将 [Authorize(Roles = nameof(SD.ROLE_ADMIN))] 更改为
[Authorize(Roles = "admin")] 它工作正常
SD.ROLE_Admin -----> public 静态字符串 ROLE_ADMIN {get;设置;} = “管理员”在静态 class
如何解决?谢谢。
nameof(SD.ROLE_ADMIN)
等于 "ROLE_ADMIN" 并且您的角色名称是 "admin",它应该是如果您更改为 [Authorize(Roles = SD.ROLE_ADMIN)]
就足够了
并且您需要将 public static string ROLE_ADMIN {get; set;} = "admin"
更改为 public const string ROLE_ADMIN = "admin"
。它需要是一个常量表达式。
这是我的代码。但不起作用
[Authorize(Roles = nameof(SD.ROLE_ADMIN))]
[HttpPost]
public async Task<IActionResult> DeleteUserAsync([FromBody] ManagementUserRequestDTO requestDTO)
{
var responseDTO = await _accountRepository.DeleteUser(requestDTO);
if (responseDTO.IsSucceeded)
return Ok(responseDTO);
return BadRequest(responseDTO);
}
如果将 [Authorize(Roles = nameof(SD.ROLE_ADMIN))] 更改为 [Authorize(Roles = "admin")] 它工作正常
SD.ROLE_Admin -----> public 静态字符串 ROLE_ADMIN {get;设置;} = “管理员”在静态 class
如何解决?谢谢。
nameof(SD.ROLE_ADMIN)
等于 "ROLE_ADMIN" 并且您的角色名称是 "admin",它应该是如果您更改为 [Authorize(Roles = SD.ROLE_ADMIN)]
并且您需要将 public static string ROLE_ADMIN {get; set;} = "admin"
更改为 public const string ROLE_ADMIN = "admin"
。它需要是一个常量表达式。