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

时间:2009-09-18 14:27:18

标签: java ajax authentication websphere

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

有没有一个很好的方法来处理这个问题? WebSphere使用登录页面返回响应状态200,因此我不能依赖它。

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

我还想过首先检查会话是否是新的,首先请求不受保护的资源,然后返回某个状态,但它看起来像代码味道解决方案...

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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