Ben*_*nCr 2 .net asp.net-mvc-4
我编写了一个自定义授权过滤器,用于AngularJS XSRF方法,但是没有调用过滤器.
奇怪的是,我从另一个项目复制它,它似乎在那里工作正常.
这是attrubute/filter代码.
[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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里它是在WebAPI控制器中装饰一个动作.
[Authorize]
public class WorksOrdersController : ApiController
{
[HttpPost]
[ValidateAngularAntiForgeryToken]
public void EmailJob(int id, EmailModel model)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
我是否必须在Web.config中添加一些内容才能使其正常工作?在实际工作的项目的web.config中,我看不到任何显着不同的东西.
问题是IAuthorizationFilterASP.NET现在有两个接口.
一个System.Web.Mvc用于"普通"视图控制器,另一个System.Web.Http.Filters用于WebAPI.
我using在版本中使用了错误的语句.
| 归档时间: |
|
| 查看次数: |
3868 次 |
| 最近记录: |