代码之家  ›  专栏  ›  技术社区  ›  svachon

如何通过使用基于表单登录的Java Web应用程序通过Ajax来处理身份验证

  •  3
  • svachon  · 技术社区  · 16 年前

    我有一个在WebSphere 7上运行的Java Web应用程序。应用程序使用表单身份验证方法,部分应用程序使用Ajax请求访问一些受保护的资源。但是,当用户的会话到期时,我将获得登录页面来代替Ajax请求应该刷新的内容。

    有没有好的方法来解决这个问题?WebSphere返回带有登录页面的响应状态200,因此我不能依赖它。

    也许有一种方法可以告诉服务器在某些情况下应该使用基本身份验证,但我不知道如何使用。

    我还考虑首先检查会话是否是新的,方法是先请求未受保护的资源,然后返回某个状态,但它看起来像是代码嗅探解决方案…

    2 回复  |  直到 16 年前
        1
  •  1
  •   ZZ Coder    16 年前

    这就是我在类似情况下处理它的方式。在我们的例子中,Ajax响应总是JSON。当登录过期时,身份验证过滤器总是以HTML格式发送登录表单。所以我检查了这样的内容类型,

     if ((this.getHeader('Content-type') || '').include('application/json'))
    

    如果不是JSON,我只需重定向到另一个受保护的页面,该页面将触发全屏登录,然后该页面将引导用户返回Ajax页面。

        2
  •  0
  •   Umesh    16 年前

    当用户会话不在WebSphere的Ajax调用中时,您可以发送一些惟一的响应或一些错误代码(确保在任何情况下都不会将此错误代码作为有效的响应)。在Ajax调用方法中,在进程响应时,检查其错误代码是否正确,如果错误代码错误,则将其重定向到登录页面或做任何事情,其他情况下都将是有效的数据。

    推荐文章