2017-03-02 84 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