gpt4 book ai didi

.net - IAuthorizationFilter 的 OnAuthorization 方法未被调用

转载 作者:行者123 更新时间:2023-12-01 15:02:47 27 4
gpt4 key购买 nike

我已经编写了一个用于 AngularJS XSRF 方法的自定义授权过滤器,但是该过滤器没有被调用。

奇怪的是,我从另一个项目中复制了它,在那里似乎工作正常。

这是属性/过滤器代码。

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class ValidateAngularAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
string token = filterContext.RequestContext.HttpContext.Request.Headers["X-XSRF-TOKEN"];
object sessionToken = filterContext.RequestContext.HttpContext.Session["XSRF-TOKEN"];

if (string.IsNullOrEmpty(token) || sessionToken == null || sessionToken.ToString() != token)
{
throw new UnauthorizedAccessException();
}
}
}

这里是装饰 WebAPI Controller 中的一个 Action 。

[Authorize]
public class WorksOrdersController : ApiController
{
[HttpPost]
[ValidateAngularAntiForgeryToken]
public void EmailJob(int id, EmailModel model)
{
// do something
}
}

我是否必须向 Web.config 添加一些内容才能使其正常工作?我在实际工作的项目的 web.config 中看不到任何显着不同。

最佳答案

问题是现在 ASP.NET 中有两个 IAuthorizationFilter 接口(interface)。

System.Web.Mvc 中的一个用于“普通” View Controller ,System.Web.Http.Filters 中的一个用于 WebAPI。

我在不起作用的版本中有错误的 using 语句。

关于.net - IAuthorizationFilter 的 OnAuthorization 方法未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19578557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com