2017-05-20 32 views
0

私はangurl 2/4 cliでasp.netコア1.1にantiforgeryトークンを実装しようとしていますが、毎回 "ValidateAntiForgeryToken"システムを使用して400の不正なリクエストエラーを出します。私が使用有するasp.net startup.csでasp.net core 1.1 antiforgery with angular 2/4

services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN"); 



app.Use(async (context, next) =>{ 
await next(); 
string path = context.Request.Path.Value; 
if (path != null && !path.ToLower().Contains("/api")) 
{ 
     var tokens = antiforgery.GetAndStoreTokens(context); 
     context.Response.Cookies.Append("XSRF-TOKEN", 
     tokens.RequestToken, new CookieOptions{HttpOnly = false}); 
} 

if (context.Response.StatusCode == 404 && 
    !Path.HasExtension(context.Request.Path.Value)) 
{ 
    context.Request.Path = "/index.html"; 
    context.Response.StatusCode = 200; 
    await next(); 
} 

})。角度app.module.tsで

私が使用しています

provider:[{ provide: XSRFStrategy, useFactory: xsrfFactory}], 

export function xsrfFactory() { 
    return new CookieXSRFStrategy('*******', '********'); 
} 

答えて

0

のようなものは、このガイドでは、参考になりましたか? http://www.dotnetcurry.com/aspnet/1343/aspnet-core-csrf-antiforgery-token

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 }); 
     } 
    } 
} 

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

は、私はこれを試してみましたが、私は、「X-XSRFトークン」ヘッダを設定しようとしたし、まだ私に400エラーを与えてWEBAPIてきたように、私の角部が適切に設定されていないと思います。 – Megh

+0

jQueryでテストリクエストを作成できますか?サーバー側が正しく動作することを確認してください。 – wannadream

+0

私は遅れて返事して申し訳ありませんjqueryを使ってリクエストを試みましたが、それでも私は正しく設定されていないようですが、同じエラーが発生しています。 – Megh

関連する問題