SecurityUserCheckBeforeControllerHandler的问题

2020-09-12 13:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,一旦用户登录hybris系...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,一旦用户登录hybris系统,我将处于ERROR以下。 用户将通过第三方系统进行身份验证,并且一旦第三方系统给出了用户身份验证成功消息,我们就会在hybris中创建该用户个人资料。 一旦用户通过第三方系统认证,我们将从第三方系统接收用户资料数据。 即使我们使用自定义代码设置了当前用户,也无法找到匿名用户出现的位置。

一旦控件退出我的自定义代码,我将在SecurityUserCheckBeforeControllerHandler中获得匿名用户角色。

日志文件错误:[SecurityUserCheckBeforeControllerHandler]用户未匹配springSecurityUserId [匿名] hybris会话用户[ 1014selectvac@spamhereplease.com ]。 会话无效。

代码:

  UsernamePasswordAuthenticationToken令牌=新的UsernamePasswordAuthenticationToken(" uId","",Collections.unmodifiableCollection(authorirites));
         
  最终的CustomerModel用户= modelService.create(CustomerModel.class);
  user.setUid(uId);
  user.setName(" lori test");
  user.setMarketType(UserStoreType.LOYALTY);
 
  modelService.save(user);
 
  userService.setCurrentUser(user);
 
  token.setDetails(new WebAuthenticationDetails(request));
  SecurityContextHolder.getContext()。setAuthentication(token);
  getGuidCookieStrategy()。setCookie(request,response);
  
6条回答
My梦
2020-09-12 14:11 .采纳回答

AuthProvider是从过滤器中调用的,因此您应该从过滤器中调用authprovider,对CustomerModel的更新应该在提供者中进行。 所有这些配置都进入sprin-security-config.xml,在这里您可以控制与URL相关的所有内容。 该链接提供了有关spring-security的更多信息 http://docs.spring.io/autorepo/docs/spring-security/4.0.0.CI-SNAPSHOT/reference/htmlsingle/#ns-auth-providers

对于您的问题,作为快速修复,在SecurityUserCheckBeforeControllerHandler中,使用用户更新currentUser,就像您在过滤器中所做的那样,我的意思是这段代码 userService.setCurrentUser(user); 使用会话服务获取此数据。 我不太清楚会产生什么影响,因为不存在身份验证提供程序。

一周热门 更多>

相关问答