Spring security 在SAP Hybris中,在结账过程等过程中,不要要求登录以纪念用户

Spring security 在SAP Hybris中,在结账过程等过程中,不要要求登录以纪念用户,spring-security,hybris,remember-me,Spring Security,Hybris,Remember Me,当我在Hybris中激活rememberMe(spring security)时,我希望rememberMe用户的行为像硬登录用户一样。我的意思是,我希望那些Memberme用户(软登录)不要遇到任何障碍,比如当他们想继续结账过程或类似的事情时。如何在SAP Hybris平台中实现这一点 您的问题:如何在Hybris中禁用RememberMe用户的硬登录 找到详细的解释 更改RequireHardLoginBeforeControllerHandler 更改RequireHardLoginBef

当我在Hybris中激活
rememberMe
(spring security)时,我希望
rememberMe
用户的行为像硬登录用户一样。我的意思是,我希望那些Memberme用户(软登录)不要遇到任何障碍,比如当他们想继续结账过程或类似的事情时。如何在SAP Hybris平台中实现这一点

您的问题:如何在Hybris中禁用RememberMe用户的硬登录

找到详细的解释

更改
RequireHardLoginBeforeControllerHandler

更改
RequireHardLoginBeforeControllerHandler.java
beforeController
方法,使其始终检查请求中是否存在
记住我
cookie,并且
guid
丢失或无效,然后创建新的
guid
,而不重定向登录页面

下面的
您的店面Memberme
需要更改店面名称,如
mysitereMemberme

    public static final String SECURE_REMEMBER_ME_COOKIES = "yourstorefrontRememberMe";

    @Resource(name = "guidCookieStrategy")
    private GUIDCookieStrategy guidCookieStrategy;

    @Override
    public boolean beforeController(final HttpServletRequest request, final HttpServletResponse response,
            final HandlerMethod handler) throws Exception
    {
        boolean redirect = true;

        // We only care if the request is secure
        if (request.isSecure())
        {
            // Check if the handler has our annotation
            final RequireHardLogIn annotation = findAnnotation(handler, RequireHardLogIn.class);
            if (annotation != null)
            {
                final String guid = (String) request.getSession().getAttribute(SECURE_GUID_SESSION_KEY);

                if ((!getUserService().isAnonymousUser(getUserService().getCurrentUser()) || checkForAnonymousCheckout()) &&
                        checkForGUIDCookie(request, response, guid))
                {
                    redirect = false;
                }

                if (redirect)
                {
                    if(isRememberMeCookiePresent(request))
                    {
                        // If you find your guid is missing, lets recreate it.
                        guidCookieStrategy.setCookie(request, response);
                        return true;
                    }
                    else
                    {
                        LOG.warn((guid == null ? "missing secure token in session" : "no matching guid cookie") + ", redirecting");
                        getRedirectStrategy().sendRedirect(request, response, getRedirectUrl(request));
                        return false;
                    }
                }

            }
        }
        return true;
    }


    protected boolean isRememberMeCookiePresent(HttpServletRequest request) {
      Cookie[] cookies = request.getCookies();

      if ((cookies == null) || (cookies.length == 0)) {
          return false;
      }

      for (Cookie cookie : cookies) {
          if (SECURE_REMEMBER_ME_COOKIES.equals(cookie.getName())) {
              return cookie.getValue() != null;
          }
      }
      return false;
  }

谢谢你的回复。在您回复我之前,我尝试了第二步,但有一些细微的差异。它有效,但这阻止了所有必需的登录操作。我只是想知道是否可以禁用特定于“记住我”的RequireHardLogIn。也就是说,是否可以仅为记住我的用户执行禁用RequireHardLogIn?我解释的是,您根本不想禁用硬登录。无论如何,让我用
记住我
cookie检查更新我的答案,只绕过那些用户。如果答案对你有帮助,就接受它。