.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"。它需要是一个常量表达式。