私は WS ポータルに少し慣れていないので、特定のシナリオで、ユーザーをログアウトしてデフォルトのポータル ログイン ページにリダイレクトする必要があります。セッションを無効にして Cookie をクリアし、response.sendRedirect("/wps/myportal/")のように response.sendRedirect を実行しようとしました。、しかし無駄に。ガイドしてください。
4 に答える
以下を使用してログアウトページを構成できますwp_configservice
。
redirect.logout=true
redirect.logout.ssl=false
redirect.logout.url=protocol://host_name/logout_page
設定後、標準ログアウトをクリックすると、指定したページにリダイレクトされます。
JSF ポートレットを使用している場合は、次の行に沿って何かを実行できます。これにより、ユーザー セッションが実際にログアウトされ、デフォルトのログイン ページに戻るはずです。
実際には、ルックアップ コード ( Context ctx = new InitialContext(); PortletServiceHome stateMgrServiceHome = (PortletServiceHome) ctx.lookup("portletservice/com.ibm.portal.state. service.PortletStateManagerService");)
public void doLogOut()
{
String logoutUrl = generateLogoutURL(getPortletRequest(), getPortletResponse());
redirectToUrl(logoutUrl);
}
public String generateLogoutURL(PortletRequest request, PortletResponse response) throws RpmPortalException {
final String methodName = "generateLogoutURL";
String logoutURL = "";
Context ctx = new InitialContext();
PortletServiceHome stateMgrServiceHome = (PortletServiceHome) ctx.lookup("portletservice/com.ibm.portal.state.service.PortletStateManagerService");
PortletStateManager stateMgr = null;
LogoutActionAccessorController logoutCtrl = null;
try {
stateMgr = stateMgrService.getPortletStateManager(request, response);
final URLFactory urlFactory = stateMgr.getURLFactory();
EngineURL url = urlFactory.newURL(null);
LogoutActionAccessorFactory logoutFct = (LogoutActionAccessorFactory) stateMgr.getAccessorFactory(LogoutActionAccessorFactory.class);
logoutCtrl = logoutFct.newLogoutActionController(url.getState());
logoutURL = url.writeDispose(new StringWriter()).toString();
} catch (StateException e) {
//do whatever you want
} catch (IOException e) {
//do whatever you want
} finally {
if (stateMgr != null) {
stateMgr.dispose();
}
if (logoutCtrl != null) {
logoutCtrl.dispose();
}
}
return logoutURL;
}
public void redirectToUrl(String url) {
try {
FacesContext context = getFacesContext();
if (context != null) {
context.getExternalContext().redirect(url);
context.responseComplete();
}
} catch (IOException e) {
//Do whatever you want
}
}
Portal の標準構成では、ユーザーを/wps/portal...
root の代わりに任意のページに誘導する/wps/myportal/...
と、ユーザーは強制的にログアウトされ、セッションが終了します。したがって、ログイン ページのわかりやすい URL を作成して、ユーザーを次の URL にリダイレクトするだけです。/wps/portal/friendlyLoginUrl