2017-03-02 71 views
0

我想用laravel和我爲它製作的api登錄一個用戶,我使用電子郵件和密碼創建了郵政編碼,但它返回了一個令牌不匹配錯誤,我想這是因爲我沒有通過任何csrf,我的疑問是如何得到它。LARAVEL - 獲取CSRF令牌用我的api登錄用戶

如果我理解正確,我只需要在我的主域名上執行GET操作,並從cookie(?)中抓取csrf。

我發現了這一點,但課程已被取消,㈡不知道如何用我的更新的代碼實現:

發現:

CookieStore cookieStore = httpClient.getCookieStore(); 
List <Cookie> cookies = cookieStore.getCookies(); 
for (Cookie cookie: cookies) { 
    if (cookie.getName().equals("XSRF-TOKEN")) { 
     CSRFTOKEN = cookie.getValue(); 
    } 
} 

需要實現我的代碼搶CSRF部分:

url = new URL(AppConfig.BaseURL); 
     HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
     connection.setRequestMethod("GET"); 

     // CookieStore cookieStore = connection.getCookieStore(); 
     // List<HttpCookie> cookies = cookieStore.getCookies(); 
     // for (Cookie cookie: cookies) { 
     // if (cookie.getName().equals("XSRF-TOKEN")) { 
     //  CSRFTOKEN = cookie.getValue(); 
     // } 
     // } 

評論是錯誤的或不贊成,但無法弄清楚如何解決它!

+0

什麼你使用的是Laravel的版本嗎? – EddyTheDove

回答

0

在每一個頁面請求我們通過CSRF標記爲一元價值的頭部

<meta name="csrf-token" content="{{ csrf_token() }}" />

之後,我們只是在JavaScript中使用這個meta值設置X-CSRF-TOKEN頭

var request = new XMLHttpRequest(); 
request.open('POST', url); 
request.setRequestHeader("X-CSRF-TOKEN", $('meta[name="csrf-token"]').attr('content')); 
request.send(data); 

希望這有助於你


編輯:您正在填充的標題可能是錯誤的。對於我們來說,這是X-CSRF-TOKEN代替XSRF-TOKEN

+0

我不認爲這就是我需要的,我沒有任何形式,只是一個應用程序。 – BugD