在 android 应用程序中处理集群环境
Handling a clustered environment in an android application
我有一个通过被动客户端进行身份验证的应用程序。基本上基于服务器信息,将启动浏览器并显示登录屏幕。用户输入登录凭据后,cookie 和会话的进一步处理将在 shouldOverrideUrlLoading
中完成。
当我连接到集群环境中的 Web 应用程序服务器时,身份验证会出现问题。当用户连接到第一台服务器时,它会显示登录屏幕并且用户输入详细信息,服务器进行身份验证,但是在 shouldOverrideUrlLoading
中的会话处理期间,我的代码连接到具有相同 url 的同一台服务器,但是响应来自服务器的用户尚未通过身份验证,而他已经完成了身份验证。
所以为了区分不同的服务器,我们使用JSESSIONID来标识服务器。
我得到了第一个 URL 上使用的原始 JSESSIONID,但是当第二个 URL 被触发时,我的代码在第二个 URL 的请求中使用 JSESSIONID 和来自第一个 URL 的其他 cookie =23=]。要触发第二个 URL,我使用 org.apache.http.impl.client.DefaultHttpClient.execute
方法。
我不确定我缺少什么来从服务器获得用户已经过身份验证的响应。
我解决了这个问题。 cookie 版本有问题,我在为第二个请求构建 HTTP 上下文时使用。
BasicClientCookie cookie = new BasicClientCookie(name,value);
// cookie.setVersion(1);
cookie.setDomain(host);
cookie.setPath("/");
cookie.setSecure(true);
cookieJar.addCookie(cookie);
我评论了 cookie 的版本,然后它识别出发送到在第一个请求中经过身份验证的同一集群成员的请求。
我有一个通过被动客户端进行身份验证的应用程序。基本上基于服务器信息,将启动浏览器并显示登录屏幕。用户输入登录凭据后,cookie 和会话的进一步处理将在 shouldOverrideUrlLoading
中完成。
当我连接到集群环境中的 Web 应用程序服务器时,身份验证会出现问题。当用户连接到第一台服务器时,它会显示登录屏幕并且用户输入详细信息,服务器进行身份验证,但是在 shouldOverrideUrlLoading
中的会话处理期间,我的代码连接到具有相同 url 的同一台服务器,但是响应来自服务器的用户尚未通过身份验证,而他已经完成了身份验证。
所以为了区分不同的服务器,我们使用JSESSIONID来标识服务器。
我得到了第一个 URL 上使用的原始 JSESSIONID,但是当第二个 URL 被触发时,我的代码在第二个 URL 的请求中使用 JSESSIONID 和来自第一个 URL 的其他 cookie =23=]。要触发第二个 URL,我使用 org.apache.http.impl.client.DefaultHttpClient.execute
方法。
我不确定我缺少什么来从服务器获得用户已经过身份验证的响应。
我解决了这个问题。 cookie 版本有问题,我在为第二个请求构建 HTTP 上下文时使用。
BasicClientCookie cookie = new BasicClientCookie(name,value);
// cookie.setVersion(1);
cookie.setDomain(host);
cookie.setPath("/");
cookie.setSecure(true);
cookieJar.addCookie(cookie);
我评论了 cookie 的版本,然后它识别出发送到在第一个请求中经过身份验证的同一集群成员的请求。