如何在Asp.Net核心自定义授权过滤器中返回未授权

时间:2016-05-16 21:47:38

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

我的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);            
    }
问题是,正如我在这里提到的其他问题所读到的那样,它被重定向到登录页面,就像它对前端控制器一样。我经常阅读的解决方案是完全覆盖这种行为。但是我的项目在同一个解决方案中有一个前端和一个API,所以我只需要在使用我的自定义属性时覆盖它。

感谢

0 个答案:

没有答案