由于Spring Security登录重定向而导致Google Analytics跟踪丢失

时间:2013-04-10 03:28:53

标签: spring spring-security google-analytics

我有一个邮寄广告系列,其中所有链接都包含Google Analytics跟踪代码,例如:

  

http://example.com/account/somePage.html?utm_source=example&utm_medium=email&utm_campaign=reminder

上下文/帐户/ **受到Spring安全保护,一旦用户点击电子邮件上的链接,就会在实际看到somePage.html之前重定向登录。这样,显示的第一个页面就像/login.do,它没有分析跟踪代码。因此,Google不会跟踪我的来源,媒介和广告系列参数。

任何想法如何解决?

2 个答案:

答案 0 :(得分:0)

基于http://support.google.com/analytics/answer/1009614?hl=en,我更新了我的LoginController,它显示了重定向到/ login的登录页面?GOOGLE_PARAMATERS:

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;
            }
        }
    }

答案 1 :(得分:0)

我们遇到了类似的问题,已经解决了下一个解决方案。

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

我们在自动登录之前通过JS调用新用户

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

https://gist.github.com/moskinson/5418938

signupDone是一个不存在的假网址。

通过这种方式,GA会收到新网址的调用,我们可以跟踪渠道!

http://packageprogrammer.wordpress.com/2013/04/19/seguimiento-con-google-analytics-a-traves-del-login-con-spring-security/