如何在 Websphere Portal 中生成注销 link?

How to generate a logout link in Websphere Portal?

我正在尝试生成注销 link,因此我不必使用 websphere 门户的默认注销 link。我试过这个:

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

但这对我没有帮助。 我只想生成一个注销 url,我可以将其传递给 <a></a>。我正在使用 Websphere Portal 8.5Spring 4.3.2。 提前致谢。

通常在Portal Theme中添加注销link;我假设您想从其他位置触发注销?

我建议在主题(动态内容点)中这样做,例如header。然后您不需要任何 java 代码。

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

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

这是默认的方式。然后,如果您需要在别处使用它,您可以通过 java 脚本自己访问此 link。