繁体   English   中英

LARAVEL-获取CSRF令牌以使用我的api登录用户

[英]LARAVEL - Get CSRF Token to login an user using my api

我正在尝试使用laravel和为此创建的api登录用户,我使用电子邮件和密码制作了邮政编码,但它返回了一个令牌不匹配错误,我想那是因为我没有通过任何csrf,我对此表示怀疑是如何得到它的。

如果我理解正确,我只需要在主域上执行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();
    }
}

需要在我的代码中实现grab 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();
        //    }
        // }

评论的内容有误或不赞成使用,但无法解决该问题!

在每个页面请求中,我们在头中传递csrf令牌作为元值

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

之后,我们只需在javascript中使用此元值来设置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

使用Laravel Passport验证您的API请求https://laravel.com/docs/5.4/passport将其配置为侦听password_grant类型,并在您的APP中使用此库https://github.com/danielsz/android-oauth2-client进行Oauth2 Api呼叫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM