jef*_*ind 4 java authentication session curl spark-java
我使用sparkjava 开发了一个简单的 java web 应用程序。它包含 GET 和 POST 请求。我制作了自己的简单身份验证脚本,它使用秘密密码对用户进行身份验证并将用户名存储在会话中:
/*
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.\"}");
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用Postman Add-on for Chrome,这工作正常。我将进行一次身份验证,服务器将让我的会话保持活动状态以供后续请求使用。
问题是我想使用 curl 来发出相同的请求,但是会话并没有从一个请求到另一个请求保持活动状态。
例如,我首先使用这个命令:
curl -s -L --data "secret=secret_password" url/auth | jsonpp
Run Code Online (Sandbox Code Playgroud)
{ "msg": "已通过身份验证!您现在可以提出请求了。" }
但是随后发出 GET 请求证明会话未保留/
curl -s -L url/films | jsonpp
Run Code Online (Sandbox Code Playgroud)
{ "error": "请验证。" }
使用 Postman 应用程序将允许我在验证 1 次后在相当长的一段时间内发出 GET 和 POST 请求。是否可以像我在这里那样使用命令行中的 curl 来做到这一点?或者我的身份验证系统不够健壮,无法从命令行使用 curl?
谢谢!
如果您想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
Run Code Online (Sandbox Code Playgroud)
该--cookie-jar选项告诉 curl 在请求结束时将它收到的任何 cookie 写入文件,并且该--cookie选项指示它从该文件读取 cookie 以发出请求。
这应该允许您登录,然后使用 cookie 在后续请求中重新建立会话。
curl --help和man curl你的朋友们!
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |