• ABP 调用swagger里面的登录接口报错400,/api/TokenAuth/Authenticate ,调用post接口就报错400


    原文
    https://www.freesion.com/article/6898417648/
    https://www.cnblogs.com/zhesong/articles/csrfanti.html



    一、调用post接口就报错400,调用get接口就没有问题

    恶心死我了。。。好久没有改过abp了



    二、报错的原因应该是Antiforgery的问题

    Antiforgery token validation failed. The required antiforgery header value "X-XSRF-TOKEN" is not present.
    Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The required antiforgery header value "X-XSRF-TOKEN" is not present.
    




    三、临时解决方案

    反正是 Antiforgery 这个的问题,我解决不了,忽略掉总可以吧,哈哈哈哈
    先临时这么解决,后面有时间再仔细研究。

    在控制器上添加这个属性就可以了,这样就可以忽略Antiforgery了
    [IgnoreAntiforgeryToken]



    四、彻底解决

    1、添加过滤器

        public class AngularAntiforgeryCookieResultFilter : ResultFilterAttribute
        {
            private IAntiforgery antiforgery;
            public AngularAntiforgeryCookieResultFilter(IAntiforgery antiforgery)
            {
                this.antiforgery = antiforgery;
            }
    
            public override void OnResultExecuting(ResultExecutingContext context)
            {
                if (context.Result is ViewResult)
                {
                    var tokens = antiforgery.GetAndStoreTokens(context.HttpContext);
                    context.HttpContext.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
                }
            }
        }
    



    2、Startup修改

    以前

    services.AddMvc(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()));
    

    现在

    services.AddAntiforgery(opts => opts.HeaderName = "X-XSRF-Token");            
    services.AddMvc(options => options.Filters.AddService(typeof(AngularAntiforgeryCookieResultFilter)));
    services.AddTransient<AngularAntiforgeryCookieResultFilter>();
    

  • 相关阅读:
    [转]C#正则表达式小结
    Silverlight 参考:KeyEventArgs.Handled 属性
    一步一步搭建免费的Silverlight 2开发环境(转载)
    Silverlight2 跨域调用Web服务的方法
    BinaryFormatter 类
    从说事到流程的理解
    比尔盖茨给青少年的11条准则
    燃烧热情
    GOF模式之乱记一通
    学而不思则罔,思而不学则殆
  • 原文地址:https://www.cnblogs.com/guxingy/p/16076979.html
Copyright © 2020-2023  润新知