Spring security 在SAP Hybris中,在结账过程等过程中,不要要求登录以纪念用户
当我在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
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检查更新我的答案,只绕过那些用户。如果答案对你有帮助,就接受它。