重定向到SSO身份验证页面时出现GWT:JS错误

时间:2015-10-14 13:12:25

标签: redirect caching gwt single-sign-on

我的情况:

  • 具有主页Application.html
  • 的GWT应用程序
  • 使用过滤器进行SSO身份验证,如果用户未连接(会话中的令牌),该过滤器会重定向到外部身份验证页面
  • 这样的缓存配置:

    <head>
        ...
        <meta http-equiv="Pragma" content="no-cache"/>
        <meta http-equiv="Cache-Control" content="no-store"/>
        <meta http-equiv="Expires" content="-1"/>
        ...
    </head>
    

我的问题:

  • 如果我的浏览器(firefox)上的缓存已关闭,我的应用程序主页在外部身份验证页面上正确重定向:它工作正常
  • 如果启用了缓存,浏览器会尝试获取GWT myApp.nocache.js,此GET请求的响应为302 : Redirect,但由于javascript,重定向失败(显示白色空白页面)错误SyntaxError: expected expression, got '<'。脚本myApp.nocache.js在外部页面(我的SSO身份验证页面)上执行,但未通过

我不明白为什么它在浏览器缓存关闭时有效,而且在启用导航缓存时我无法避免javascript执行。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我用一个肮脏的解决方案解决了我的问题:

在我的过滤器中检查身份验证,如果我必须重定向到我的外部登录页面,如果请求的资源是javascript,我会进行javascript重定向:

from boto.utils import get_instance_metadata
import boto.rds

# This works fine    
m =  get_instance_metadata()

access_key = m[****]
secret_key = m[****]
security_token = m[****]

try:
# And this works fine
    region_object = boto.rds.connect_to_region("eu-central-1", aws_access_key_id=access_key, aws_secret_access_key=secret_key)

except ValueError, e:
    print "Error: {0}".format(e.message)

rds = boto.connect_rds(aws_access_key_id = access_key, aws_secret_access_key = secret_key, security_token = security_token, region=region_object.region)
instances = rds.get_all_dbinstances()
print instances

>> []

这对我有用,但如果你有更好的方法在任何情况下正确地进行重定向,我会接受它。

此帖中列出了其他解决方案:Detect if GWT *.nocache.js file loaded properly