在Websphere Portal 8&amp ;;中以编程方式显式注销用户。重定向到默认登录页面

时间:2013-05-16 10:29:29

标签: java jsf java-ee websphere websphere-portal

我对WS门户网站有点新手有一个要求,其中在特定场景中我们希望用户注销&将他重定向到默认门户登录页面。 我试图使会话无效清除Cookie&像 response.sendRedirect(“/ wps / myportal /”)一样执行response.sendRedirect; , 但是徒劳无功 请指导。

4 个答案:

答案 0 :(得分:2)

您可以使用wp_configservice配置注销页面:

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

配置完成后,单击标准注销会将您重定向到指定的页面。

答案 1 :(得分:1)

如果您正在使用JSF portlet,您可以按照以下方式执行某些操作 - 这实际上应该记录用户会话以及将它们返回到默认登录页面。

实际上,你可能想要考虑通过移出查找代码来缓存初始上下文查找(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
        }

    }

答案 2 :(得分:0)

在Portal的标准配置中,将用户定向到以/wps/portal...作为根而不是/wps/myportal/...的任何页面将强制用户注销并结束会话。因此,您只需为登录页面创建一个友好的URL,并将用户重定向到/wps/portal/friendlyLoginUrl

答案 3 :(得分:0)

只是zargarf所说的一个补充,默认情况下,点击退出时会执行以下js:

javascript:if(stproxy && stproxy.isLoggedIn){stproxy.login.logout();}