0

我的问题很奇怪,我不完全确定是否可以做到。我在 Liferay 中使用 Spring MVC,我正在尝试实现以下目标。我正在做的应用程序有两个域两个门户,它们将位于两个不同的 URL 上。我需要在用户登录第一个门户并验证他的凭据后,将他重定向到同一门户中的某个页面并在新选项卡中打开另一个门户的登录页面。

我试图通过以下方式实现这一目标。由于我无法对我尝试的单个登录功能有两个响应,因此一旦他登录后使用 liferay 挂钩功能重定向他登录重定向操作。

这将我带到第一个门户的登录页面。在同一个重定向操作中,我创建了一个 cookie,通知我用户已在此处登录。

@Override
public void run(HttpServletRequest request, HttpServletResponse response)
        throws ActionException {

    try {
        Cookie loginCookie = new Cookie("loged_in_confirmed","1");
        response.addCookie(loginCookie);

        response.sendRedirect("somePage");

    } catch (Exception e) {
        //TODO
    }

在重定向将我带到的页面上,我有一个 jQuery 文档就绪函数来检查 cookie。如果 cookie 在那里,它会删除它,它应该将我重定向到新选项卡中的另一个门户。

然而,新标签的打开总是被弹出窗口阻止程序阻止。我试过用window.href打开它,用目标空白打开window.open,我什至尝试添加一个隐藏链接,target ="_blank"但弹出窗口阻止程序仍然得到他。我愿意接受任何建议,我是否在我做这件事的方式上遗漏了一些东西,或者我在这里完全是目标,并且有一种完全不同的方式来做到这一点?

4

1 回答 1

0

弹出窗口阻止程序查看窗口是否由于用户操作而打开。从本质上讲,这意味着 window.open 和其他窗口打开器将查看调用堆栈以查看您是否正在处理输入事件,并且仅在您处理时才允许弹出窗口。这让人想起了以与弹出窗口阻止程序兼容的方式打开第二页的两个选项:

  1. 当用户单击登录到一个页面时打开弹出窗口,该页面将单独登录到第二个站点或轮询已经在进行中的登录,如果登录失败则自行关闭。可能最好的方法是将弹出窗口设置为加载等待登录成功或失败的页面,然后返回重定向到第二个门户或关闭弹出窗口的 JS 片段。
  2. 在 target="_blank" 的第一个门户上放置“单击此处使用第二个门户”链接。这就是我会做的,除非在没有用户干预的情况下加载两个站点是客户的要求。
于 2012-05-06T23:19:45.690 回答