首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有GET请求的MarkLogic应用服务器自定义登录页面sessionID cookie

带有GET请求的MarkLogic应用服务器自定义登录页面sessionID cookie
EN

Stack Overflow用户
提问于 2017-06-11 18:16:08
回答 0查看 149关注 0票数 1

我正在尝试用MarkLogic-9开发一个两层的web应用程序,使用服务器端的JavaScript和HTTP app服务器。我有一个简单的页面,提示输入用户名/密码,并通过Ajax向应用服务器发送GET请求(应用程序级身份验证)。

我的login.sjs脚本:

代码语言:javascript
复制
//generate object with field names from Request params
var params ={}; //JSON parsed URL parameters
var field_names = xdmp.getRequestFieldNames().toArray();
for(var fname_idx in field_names){
  params[field_names[fname_idx]] = String(xdmp.quote(xdmp.getRequestField(String(field_names[fname_idx]))));
}
//get username and password from passed paramters
var username = params.username;
var password = params.password;
var ret = xdmp.login(username,password);

ret;

我已经对此进行了测试,并通过输出xdmp.currentUser()验证了它是否正常工作。

然后,登录页面重定向到显示基本用户信息的主页。我的问题是,在客户端重定向到主页后,我不知道如何保留当前用户的会话。

应用程序服务器具有应用程序级身份验证和一个名为Login-User的默认用户,这是一个自定义用户,它只具有登录所需的权限(xdmp:login)。应用服务器托管在localhost:8601上。我发现,当我直接从浏览器运行login.sjs (即输入localhost:8601/login.sjs?username=test_user&password=test_password),)时,我的浏览器会得到一个带有sessionID的cookie。但是,当我通过Ajax GET请求运行login.sjs时,我的浏览器没有得到任何cookie。我不知道这是否是问题所在,但我认为这可能值得一提。

我仍然是一个MarkLogic新手,所以我可能用完全错误的方式来做这件事。基本上,我如何在重定向到新页面后继续单个用户的会话?我是否要使用cookies来保存sessionID?我是否应该在本地存储中保留用户名和密码,并在网站每次调用新的.sjs文件时登录?

为了完整起见,下面是我用来调用Ajax进行登录的客户端js。非常不言自明。如果登录成功,login.sjs文件只返回true/false。

代码语言:javascript
复制
function createLoginEar(){
$("#login-button").click(function(event){
    var un = $("#username").val();
    var pw = $("#password").val();
    if(un){
        params.username = $("#username").val();
    }
    if(pw){
        params.password = $("#password").val();
    }
    event.preventDefault(); //prevent form from clearing
    console.log("input entered");
    $.ajax({
        type: "GET",
        url: url,
        data: params,
        success: function(data){
            if(data == "true"){
                console.log("worked");
                window.location.href = "homepage.html";
            } else{
                invalidLogin();
            }
        },
        error: function(data){
            invalidLogin();
        }
    })
})

}

问题是,一旦页面重定向到homepage.html,似乎没有用户登录的记忆,当homepage.html调用任何.sjs文件时,用户重置为默认值“登录-用户”。

提前谢谢。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44482666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档