3

我对 WS 门户有点陌生,并且有一个要求,在特定场景中,我们希望用户注销并将他重定向到默认的门户登录页面。我试图使会话无效,清除 cookie 并执行 response.sendRedirect,如response.sendRedirect("/wps/myportal/");,但徒劳无功。请指导。

4

4 回答 4

2

您可以使用以下方式配置注销页面wp_configservice

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

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

于 2013-06-09T06:19:04.783 回答
1

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

实际上,您可能需要考虑通过移出查找代码来缓存初始上下文查找( Context ctx = new InitialContext(); PortletServiceHome stateMgrServiceHome = (PortletServiceHome) ctx.lookup("portletservice/com.ibm.portal.state.服务.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
        }

    }
于 2013-05-21T08:32:48.353 回答
0

只是对zargarf所说的补充,默认情况下,单击注销时会执行以下js,如下所述:

javascript:if(stproxy && stproxy.isLoggedIn){stproxy.login.logout();}
于 2013-05-31T11:19:36.917 回答
0

在 Portal 的标准配置中,将用户定向到以/wps/portal...root 身份而不是的任何页面/wps/myportal/...将强制用户注销并结束会话。所以你可以为你的登录页面创建一个友好的 URL 并将用户重定向到/wps/portal/friendlyLoginUrl

于 2013-05-16T18:42:11.113 回答