C# asp.net核心(2.0)基于策略的rest服务身份验证-HTTP响应

C# asp.net核心(2.0)基于策略的rest服务身份验证-HTTP响应,c#,api,asp.net-core,http-headers,authorization,C#,Api,Asp.net Core,Http Headers,Authorization,我有一个asp.NETCore2.0程序,它有一个使用cookies/form-based auth的MVC前端和一些使用令牌的RESTISHWebAPI。我已经为基于令牌的web api实现了一个自定义AuthenticationHandler等。总之,基于令牌的身份验证工作正常,并且根据应用的策略授予或不授予访问权限。MVC身份验证也可以工作 当MVC身份验证失败时,用户将被重定向到登录页面 当令牌身份验证失败时,结果是401未经授权 这两个都很好 我遇到的问题是,当我调用RESTWebAP

我有一个asp.NETCore2.0程序,它有一个使用cookies/form-based auth的MVC前端和一些使用令牌的RESTISHWebAPI。我已经为基于令牌的web api实现了一个自定义AuthenticationHandler等。总之,基于令牌的身份验证工作正常,并且根据应用的策略授予或不授予访问权限。MVC身份验证也可以工作

当MVC身份验证失败时,用户将被重定向到登录页面 当令牌身份验证失败时,结果是401未经授权

这两个都很好

我遇到的问题是,当我调用RESTWebAPI时,基于策略的授权失败(例如,有效令牌不授予对资源的访问权),它会退回到带有HTTP 200代码的MVC“基于表单的身份验证”方案。我希望有一个简单的403(不允许)HTTP响应。我已经到处搜索了,但是找不到一种方法来指定如何返回错误


如何做到这一点?

我尝试将以下代码添加到PolicyHandler的末尾,但没有任何效果:
如果(context.Resource是Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext AuthorizationFilterContext AuthorizationFilterContext){AuthorizationFilterContext.HttpContext.Response.StatusCode=403;}返回Task.CompletedTask您可以查看cookie身份验证事件。感谢您为我指明了正确的方向。事实上,使用services.configureApplicationOkie添加OnRedirectToAccessDenied处理程序就成功了