由于Spring安全登录重定向而丢失Google Analytics跟踪

由于Spring安全登录重定向而丢失Google Analytics跟踪,spring,spring-security,google-analytics,Spring,Spring Security,Google Analytics,我有一个邮件活动,其中所有链接都包括谷歌分析跟踪代码,例如: context/account/**通过Spring security进行保护,一旦用户单击电子邮件上的链接,他就会在实际看到somePage.html之前重新登录。这样,显示的第一个页面类似于/login.do,没有分析跟踪代码。因此,谷歌不会跟踪我的来源、媒体和活动参数 有什么解决方法吗?基于此,我更新了我的LoginController,其中显示了要重定向到/login?GOOGLE_参数的登录页面: private stat

我有一个邮件活动,其中所有链接都包括谷歌分析跟踪代码,例如:

context/account/**通过Spring security进行保护,一旦用户单击电子邮件上的链接,他就会在实际看到somePage.html之前重新登录。这样,显示的第一个页面类似于/login.do,没有分析跟踪代码。因此,谷歌不会跟踪我的来源、媒体和活动参数

有什么解决方法吗?

基于此,我更新了我的LoginController,其中显示了要重定向到/login?GOOGLE_参数的登录页面:

private static final String ALREADY_REDIRECTED = "ALREADY_REDIRECTED";
....

@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView loginView(HttpServletRequest request, HttpServletResponse response){
....

Boolean alreadyRedirected = (Boolean) request.getSession().getAttribute(ALREADY_REDIRECTED);
    if (alreadyRedirected==null){
        SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
        if (savedRequest!=null){
            String source[] = savedRequest.getParameterValues("utm_source");
            if (source!=null && source.length>0){
                // we need to redirect with login instead

                String mediums[] = savedRequest.getParameterValues("utm_medium");
                String medium = mediums.length==0 ? "" : mediums[0];
                String campaigns[] = savedRequest.getParameterValues("utm_campaign");
                String campaign = campaigns.length==0 ? "" : campaigns[0];

                String redirect = "redirect:/login?utm_source=" + source[0] +  "&utm_medium=" + medium + "&utm_campaign=" + campaign;
                mav.setViewName(redirect);

                // mark not to do twice
                request.getSession().setAttribute(ALREADY_REDIRECTED, new Boolean(true));
                return mav;
            }
        }
    }

我们有类似的问题,并已解决了下一个解决方案

我们有一个通过Ajax注册的表单,在回调中,如果一切正常,我们会自动登录用户,并丢失用于漏斗可视化的Google Analytics跟踪代码,因为Spring Security会话无效,并设置了一个新的cookie

JS在自动登录之前所做的就是调用这个新用户

_gaq.push(['_trackPageview', '/signupDone']);

signupDone是一个不存在的假url

通过这种方式,GA接收到一个新url的调用,我们可以跟踪漏斗


如果想要匿名访问,为什么要保护URL模式
/account/**
?我不想要匿名访问。使用默认配置,用户登录后应重定向回原始URL,因此,在呈现页面时,参数应该仍然存在。将分析代码添加到登录页面我无法控制登录页面(它会自动通过spring重定向到)。谢谢,但您的解决方案不适用于我的问题。您无法执行任何JS编码,因为重定向是在您尝试登录到受保护的页面时发生的。我找到的唯一方法是再次重定向到包含引用参数的URL