【问题标题】:Spring Security Acquire Roles from a Web ServiceSpring Security 从 Web 服务获取角色
【发布时间】:2015-08-04 14:37:57
【问题描述】:

希望使用带有注释的 Spring MVC + Spring Security。 Spring Security 具有从 XML 文件或数据库获取角色信息的强大功能。但是,我们的角色信息可以通过定制的 SOAP Web 服务访问。有什么想法可以从 Web 服务中获取角色信息吗?

理想情况下,我想覆盖 hasRoles() 等并对其进行修改,以便随后调用 SOAP WS 并返回用户的角色。我该怎么做?

还是有其他想法?

【问题讨论】:

    标签: java spring web-services spring-mvc spring-security


    【解决方案1】:

    如果您在使用spring-security 时需要自定义属性,您必须实现自己的UserDetailsService 接口,其中包含以下方法:

    public UserDetails loadUserByUsername(final String email)
    

    因此,在从数据源检索用户后,添加对您的角色网络服务的调用...类似这样的事情:

    public class UserDetailsExtendedService implements UserDetailsService {
        @Autowired
        private UsersDAO usersDao;
    
        private UserDetails prepare(com.data.User user) {
            boolean enabled = user.getState().equals(UserState.Active);
    
            Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
            for (UserRole r: /*CALL TO WEB-SERVICE*/) {
              authorities.add(new GrantedAuthorityImpl(r.getName()));
            }
    
            return new UserDetails(user.getId(), user.getEmail(), user.getPassword(), user.getNickname(), user.getPosition(), user.getAvatar(), user.getCommunicationLanguage().getCode(), 
                user.getNotificationChannel(), user.getPartnerId(), enabled, enabled, enabled, enabled, authorities);
        }
    
        @Override
        @Transactional(readOnly = true)
        public UserDetails loadUserByUsername(final String email)
                throws UsernameNotFoundException, DataAccessException, HibernateException {
            com.data.User user = usersDao.getByEmail(email);
            if (user == null)
                throw new UsernameNotFoundException(email);
    
            return prepare(user);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 2015-04-13
      • 2017-02-10
      • 1970-01-01
      • 2020-06-01
      • 2012-04-22
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多