如何在Websphere Portal中生成注销链接?

时间:2016-12-19 14:58:36

标签: java spring spring-mvc portlet websphere-portal

我尝试生成退出链接,因此我不必使用websphere门户网站的默认注销链接。我试过这个:

MyLogoutUrlGenerator:

    public String generateLogoutUrl(RenderRequest req, RenderResponse res)
        throws [...] {
    String logoutUrl = "";
    Context ctx = new InitialContext();
    PortletServiceHome stateMgrServiceHome = (PortletServiceHome) ctx
            .lookup("portletservice/com.ibm.portal.state.service.PortletStateManagerService");
    PortletStateManagerService service = (PortletStateManagerService) stateMgrServiceHome
            .getPortletService(PortletStateManagerService.class);
    PortletStateManager stateMgr = service.getPortletStateManager(req, res);
    final URLFactory urlFactory = stateMgr.getURLFactory();
    EngineURL url = urlFactory.newURL(null);
    LogoutActionAccessorFactory logoutFactory = (LogoutActionAccessorFactory) stateMgr
            .getAccessorFactory(LogoutActionAccessorFactory.class);
    logoutUrl = url.writeDispose(new StringWriter()).toString();
    stateMgr.dispose();
    return logoutUrl;
}

Controller.java:

@RenderMapping()
public ModelAndView showLatestNews(PortletPreferences pref, RenderRequest req, RenderResponse res) {
    ModelAndView mav = new ModelAndView("news/newsflash");
    [...]
    try {
        mav.addObject("logoutUrl", generateLogoutUrl(req, res));
    } catch ([...]){
        e.printStackTrace();
    }
    return mav;
}

newflash.jsp:

...
<a href="${logoutUrl}">Logout</a>
...

这是我在this post中找到的一段代码的修改版本。但我无法让它发挥作用。 我看过很多像这样的帖子:

redirect.logout=true
redirect.logout.ssl=false
redirect.logout.url=protocol://host_name/logout_page

但这对我没有帮助。 我只想生成一个我可以传递给<a></a>的注销网址。我使用 Websphere Portal 8.5 Spring 4.3.2 。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

通常会在Portal主题中添加注销链接;我假设您想从其他位置触发注销?

我建议在主题(动态内容点)中执行此操作。标题。然后,您不需要任何Java代码。

例如,在主题中的commonActions.jsp中:

<a id="logoutlink" href="<portal-navigation:url command='LogoutUser' keepNavigationalState='false'/>"><portal-fmt:text key="link.logout" bundle="nls.engine"/></a>

这是执行此操作的默认方式。然后,您可以通过javascript自行访问此链接,如果您需要在其他地方使用它。