gpt4 book ai didi

java - 从命令行使用 curl 时 session 死亡

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:42 25 4
gpt4 key购买 nike

我使用 sparkjava 开发了一个简单的 Java 网络应用程序.它处理 GET 和 POST 请求。我制作了自己的简单例份验证脚本,它使用 secret 密码对用户进行身份验证并将用户名存储在 session 中:

    /*
Make sure authenticated
*/
before((req, res) -> {
boolean authenticated = false;
if ( req.session().attribute("user") != "casumo_user" ) {
try{
if (req.queryParams("secret").equals(System.getenv().get("SECRET"))){
authenticated = true;
req.session().attribute("user","casumo_user");
}
}catch (Exception e){
halt(401, "{\"error\":\"Please Authenticate.\"}");
}
}else{
authenticated = true;
}

if (!authenticated) {
halt(401, "{\"error\":\"Please Authenticate.\"}");
}
});

我使用的是 Postman Add-on for Chrome ,这工作正常。我会进行一次身份验证,服务器会为后续请求保持我的 session 有效。

问题是我想使用 curl 来发出相同的请求,但是从一个请求到另一个请求, session 并没有保持活跃。

例如,首先我使用这个命令:

curl -s -L --data "secret=secret_password" url/auth | jsonpp 

{ "msg": "Authenticated! You can now make requests." }

但是随后进行 GET 请求证明 session 未保留/

curl -s -L url/films | jsonpp 

{ "error": "Please Authenticate." }

使用 Postman 应用程序可以让我在验证 1 次后的相当长一段时间内发出 GET 和 POST 请求。是否可以像我在这里那样使用命令行中的 curl 来执行此操作?还是我的身份验证系统不够强大,无法从命令行使用 curl?

谢谢!

The project is on GitHub.

最佳答案

如果您希望 curl 在调用之间存储 cookie,您需要告诉它这样做。

查看 --cookie--cookie-jar 选项。

curl --cookie-jar cookies.txt -s -L --data "secret=secret_password"
# then
curl --cookie cookies.txt --cookie-jar cookies.txt -s -L url/films

--cookie-jar 选项告诉 curl 在请求结束时将它收到的任何 cookie 写入文件,而 --cookie 选项指示它读取来自该文件的用于发出请求的 cookie。

这应该允许您登录,然后在后续请求中使用 cookie 重新建立 session 。

curl --helpman curl 是你的 friend !

关于java - 从命令行使用 curl 时 session 死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37983499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com