我有一个用于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,因此仅在使用我的自定义属性时才需要覆盖它。
谢谢