0

这是我的代码。但不工作

[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 -----> 公共静态字符串 ROLE_ADMIN {get; set;} = "admin" 在静态类

如何解决?谢谢你。

4

1 回答 1

1

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

于 2021-09-14T13:16:18.903 回答