2017-09-14 149 views
0

我有使用Primefaces对话框框架打开对话框的问题。我们正在使用SSO解决方案,通过与内部公司SSO解决方案集成来为我们的应用程序提供安全性Primefaces对话框框架+ SSO URL重写

总之。 我们的服务器上的应用程序的真实地址是(例如sso),例如:https://appserver1.net/ctx/page.xhtml(其中ctx是我们应用程序的根环境) 在正常情况下,我们得到sso地址例如:https://ssoaddress.net/junction/page.xhtml 其中junction = ctx。在请求sso地址被重写,以找到我们的服务器的真实地址,获取资源和响应再次重写为sso url地址。一切正常。但是我们获得了第二个环境(DEV02),由于某些限制,我们得到了sso地址,其中junction = = ctx如:https://ssoaddress.net/junction/ctx/page.xhtml。在这种情况下,当我试图打开对话框我得到的信息:“page.xhtml在外部上下文中找不到作为资源”。

当结= CTX工作代码:

public void openTestPage() {   
    Map<String,Object> options = new HashMap<String, Object>(); 
    options.put("resizable", false); 
    options.put("draggable", true); 
    options.put("modal", true); 
    options.put("height", 250); 
    options.put("contentHeight", "100%"); 
    options.put("closable", true); 
    RequestContext.getCurrentInstance().openDialog("/pages/page", options, null); 
} 

由于事实结重写比在不同的情况下是不可能找到请求page.html中。也许你们中有人知道如何解决这个问题?我补充说我不能重写应用程序的上下文。 技术信息:primefaces 6.0,JSF2.2,weblogic 12.2.1。 资源结构:src/main/webapp/pages/page.xhtml

+1

我希望一切都会失败if junction!= ctx?不仅是PF对话框架。例如。从服务器端也正常'重定向'... – Kukeltje

回答

0

由于某些限制,您无法修复由于某些限制导致网址重写不正确的问题,因此您只能通过其他重写修复它。

你可以在你的服务器和sso之间放置一个单独的代理服务器,它可以进行重写。
或者你可以在你的应用程序中重写。您可以创建自己的重写servlet过滤器或使用第三方解决方案,例如PrettyFaces