2017-04-26 10 views
2

スプリングブートを使用してhtmlメタタグでcsrfトークンを取得するにはどうすればよいですか?スプリングブートを使用してhtmlメタタグでcsrfトークンを取得するには

は、私はすでに

現在、私のプロジェクトは、SPRINGのBOOTであるXML設定を使って、春にCSRFトークンを行って。私はたくさんの努力をしたが運がなかった。

私は私のセキュリティ設定が

@EnableWebSecurity 
@Configuration 
public class WebSecurityConfig extends 
    WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
     .csrf(); 
    } 
} 

application.properties

security.basic.enabled=false 
security.enable-csrf=true 

プロジェクトを実行した後、まだ私は&ヌルトークンを取得されたHTMLコード

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Welcome to Spring Boot project</title> 
     <meta name="_csrf" content="${_csrf.token}"/> 
     <meta name="_csrf_header" content="${_csrf.headerName}"/> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    </head> 
    <body> 
     <div class="LoginPanel"> 
      <form role="form" action="LoginAuth"> 
       <input value="sample" type="text" name="Username" class="form-control" data-parsley-type="alphanum" placeholder="Username" required/> 
       <button type="submit" class="btn-block Signin btn btn-labeled1 btn-warning"> 
        Sign in 
       </button> 
      </form> 
     </div> 
     <script> 
     $(document).ready(function() 
     { 
      var Form = $(".LoginPanel").find("form"); 
      $(".LoginPanel").find("button.Signin").click(function(Event) 
      {  
       Event.preventDefault(); 
       $.ajax(
       { 
        type: "POST", 
        url: "LoginAuth", 
        data: Form.serialize(), 
        beforeSend: function (xhr,settings) 
        { 
         var CSRFToken = $("meta[name='_csrf']").attr("content");console.log(CSRFToken); 
         var CSRFHeader = $("meta[name='_csrf_header']").attr("content");console.log(CSRFHeader); 
         xhr.setRequestHeader(CSRFHeader, CSRFToken); 
        }, 
        success: function(ResponseData, textStatus, jqXHR) 
        { 
         console.log(ResponseData);alert("success"); 
        }, 
        error: function(jqXHR, textStatus, errorThrown) 
        { 
         console.log("Error"); 
        } 
       }); 
      }); 
     }); 
     </script> 
    </body> 
</html> 

を持っていますヘッダー名

私はこの

<meta name="_csrf" content="7d789af1-996f-4241-ab70-2421da47bb09"/> 
<meta name="_csrf_header" content="X-XSRF-TOKEN"/> 

のようなページのソースから予期

それは可能ですか?

おかげ

+0

する – Jaiwo99

答えて

-2

あなたはcontent属性がどのような方法で動的であり、それが処理なっていないことを示していません。あなたが使っているものをテンプレートエンジンを指定しませんでしたが、このはThymeleafのようなに見えるので、ここであなたのタグがどのように見えるかです:CSRFトークンが存在する場合、最初にHTTPレスポンスをチェック

<meta name="_csrf" data-th-content="${_csrf.token}" /> 
+0

が存在します現在、私はテンプレートエンジンを使用していません。テンプレートエンジンは必須ですか? – user2214646

+0

@ user2214646はい、あなたはHTML内のそれらのプレースホルダを埋める* something *を持つ必要があるからです。この変更を加えてThymeleafスターターを追加すれば、それはちょうどうまくいくはずです。 – chrylis

関連する問題