我尝试生成退出链接,因此我不必使用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 。
提前谢谢。
答案 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自行访问此链接,如果您需要在其他地方使用它。