【问题标题】:Handling a clustered environment in an android application在 android 应用程序中处理集群环境
【发布时间】:2016-03-12 00:04:17
【问题描述】:

我有一个通过被动客户端进行身份验证的应用程序。基本上基于服务器信息,将启动浏览器并显示登录屏幕。一旦用户输入登录凭据,cookie 和会话的进一步处理将在shouldOverrideUrlLoading 中完成。

当我连接到集群环境中的 Web 应用程序服务器时,身份验证会出现问题。当用户连接到第一台服务器时,它会显示他的登录屏幕并且用户输入详细信息,服务器进行身份验证,但是在shouldOverrideUrlLoading 的会话处理期间,我的代码使用相同的 url 连接到同一台服务器,但服务器的响应来自该用户还没有通过身份验证,而他已经进行了身份验证。

所以为了区分不同的服务器,我们使用 JSESSIONID 来识别服务器。 我得到了在第一个 URL 上使用的原始 JSESSIONID,但是当第二个 URL 被触发时,我的代码在第二个 URL 的请求中使用第一个 URL 的 JSESSIONID 和其他 cookie。要触发第二个 URL,我使用 org.apache.http.impl.client.DefaultHttpClient.execute 方法。

我不确定从服务器获取用户已通过身份验证的响应时缺少什么。

【问题讨论】:

  • 这很抽象。显示代码?

标签: android application-server jsessionid


【解决方案1】:

我解决了这个问题。 cookie 版本存在问题,我在为第二个请求构建 HTTP 上下文时使用。

BasicClientCookie cookie = new BasicClientCookie(name,value);
// cookie.setVersion(1);
cookie.setDomain(host);
cookie.setPath("/");
cookie.setSecure(true);
cookieJar.addCookie(cookie);

我评论了 cookie 的版本,然后它识别请求发送到在第一个请求中经过身份验证的同一集群成员。

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多