c# - 如何在没有 Authorize 属性的 ASP Core 2 方法中获取用户声明?

标签 c# asp.net asp.net-core .net-core asp.net-authorization

我有一个可以匿名访问的 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/

相关文章:

c# - base64 jpeg 到 MemoryStream?

c# - 为什么此 MVC 路由不起作用(ASP.Net Core 2.2)

regex - 如何使用 FluentValidation 创建强密码?

c# - 在 Rx 中,为什么 When 给我过时的元素

c# - Windows 窗体并行绘图

javascript - CSS 和 JS 文件丢失错误

javascript - 为什么 JS/JQuery 不读取文本框的值?

azure - Azure AD B2C 上的单点注销

c# - AutoMapper 返回空和 null

c# - 如何在 winforms 应用程序中连接到远程 SQL Server 数据库?