我的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,所以我只需要在使用我的自定义属性时覆盖它。
感谢