小编Ren*_*era的帖子

如何在Asp.Net Core自定义授权筛选器中返回未授权

我有一个用于API的自定义授权过滤器,该过滤器会检查保存在数据库中的令牌。

像这样

override public void OnAuthorization(AuthorizationContext context)
    {
        if (!context.HttpContext.Request.Headers.Keys.Contains("X-CustomToken"))
        {
            context.HttpContext.Response.StatusCode = 401; //Unauthorized
            return;
        }

        var headerToken = context.HttpContext.Request.Headers
                         .Where(a => a.Key.ToLower() == "x-customtoken").FirstOrDefault();
        var company= _repository.GetCompanyByToken(headerToken.Value);
        if (company == null)
        {
            context.Result = new HttpStatusCodeResult(401);
            return;
        }

        _myFactory.SetCurrentCompany(company);            
    }
Run Code Online (Sandbox Code Playgroud)

问题是,正如我在此处询问的其他问题中所读到的一样,它被重定向到登录页面,就像对前端控制器一样。我通常阅读的解决方案是完全覆盖此行为。但是,我的项目在同一解决方案中有一个前端和一个API,因此仅在使用我的自定义属性时才需要覆盖它。

谢谢

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

6
推荐指数
0
解决办法
4099
查看次数

标签 统计

asp.net-authorization ×1

asp.net-core ×1

c# ×1