Session 了解适配器会话和cookie管理
我正在开发一个IBM MobileFirst Platform 7.1.0应用程序,该应用程序使用几个受gicar/siteminder保护的web服务 按照一些教程中的建议,我创建了一个名为GicarManagementAdapter的适配器和其他几个适配器,每个正在使用的web服务一个适配器 GicarManagementAdapter包含重新登录gicar/siteminder的逻辑。它实现了3种方法:Session 了解适配器会话和cookie管理,session,cookies,ibm-mobilefirst,mobilefirst-adapters,Session,Cookies,Ibm Mobilefirst,Mobilefirst Adapters,我正在开发一个IBM MobileFirst Platform 7.1.0应用程序,该应用程序使用几个受gicar/siteminder保护的web服务 按照一些教程中的建议,我创建了一个名为GicarManagementAdapter的适配器和其他几个适配器,每个正在使用的web服务一个适配器 GicarManagementAdapter包含重新登录gicar/siteminder的逻辑。它实现了3种方法: “submitAuthentication”:这是客户端在登录时调用的方法。客户端使用
WL.Server.getClientRequest().getSession().setAttribute("GICAR-COOKIE", cookieValue);
function invokeService(invocationData) {
var gicarCookie = WL.Server.getClientRequest().getSession().getAttribute("GICAR-COOKIE");
WL.Logger.info("Invoking service with coookie: " + gicarCookie);
var headers = invocationData.headers || {};
headers['cookie'] = gicarMgmt.cookieName + "=" + gicarCookie;
invocationData.headers = headers;
WL.Server.invokeHttp(invocationData);}
只要客户机应用程序想要访问后端,它就会调用其中一个适配器方法。这些方法只是构建SOAP主体并创建传递给GicarManagementAdapter.invokeService
方法的调用数据。invokeService方法仅获取调用数据并添加存储在当前客户端会话中的cookie头:
WL.Server.getClientRequest().getSession().setAttribute("GICAR-COOKIE", cookieValue);
function invokeService(invocationData) {
var gicarCookie = WL.Server.getClientRequest().getSession().getAttribute("GICAR-COOKIE");
WL.Logger.info("Invoking service with coookie: " + gicarCookie);
var headers = invocationData.headers || {};
headers['cookie'] = gicarMgmt.cookieName + "=" + gicarCookie;
invocationData.headers = headers;
WL.Server.invokeHttp(invocationData);}
(为了处理会话过期cookie的响应,代码稍微复杂一些)
不幸的是,我无法控制后端
我看到了几个问题:
ignore_cookies
标记)。我可以看到cookie被正确地发送到后端。当Cookie过期并且后端发送Set Cookie:GICSESSION=LOGGEDOFF头时,问题开始出现。MFP服务器从WL.server.InvokeHttp请求接收到此标头后,会将此cookie添加到下一个请求中。因此,流程如下所示:
Set Cookie:GICSESSION=LOGGEDOFF
后清除/删除Cookie