我有一个可以匿名访问的 API 方法。我想使用资源授权来确定用户是否有权访问。如果对象是“公共(public)的”,那么任何人(包括匿名用户)都可以访问它。如果对象是“私有(private)的”,则只能由登录用户查看。如果我在方法上有一个授权属性,这个逻辑就可以正常工作,但如果没有,即使用户登录也没有声明。
有没有办法在没有 Authorize 属性的方法中获取用户的声明?
方法如下:
[HttpGet]
[Route("name/{name}")]
public async Task<IActionResult> Get(string name)
{
var activity = Repo.GetCommandLineActivity(name);
if (activity == null)
{
return NotFound();
}
var isAuthed = await _authService.AuthorizeAsync(User, activity, new ViewIPublicPrivateRequirement());
if (isAuthed.Succeeded)
{
return Ok(activity);
}
return Unauthorized();
}
最佳答案
解决方案其实很简单,添加 [AllowAnonymous]
和 [Authorize]
就可以了。
关于c# - 如何在没有 Authorize 属性的 ASP Core 2 方法中获取用户声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453591/