更新登录用户Spring安全的权限

时间:2017-12-11 17:08:16

标签: spring-security


我已经将弹簧安全性集成到一个带有弹簧引导的宁静API上, 现在我正在寻找一种方法来更新已登录用户的权限。
我已经为Spring身份验证实现了一个自定义用户! 我可以像这样从sessionRegistry获得所有校长(所有登录用户):

        List<Object> allPrincipals = sessionRegistry.getAllPrincipals();

现在,当我尝试更新特定用户的权限时,当局不会更新我总是拥有相同的权限,直到退出然后登录。

这是我的代码:

List<Object> allPrincipals = sessionRegistry.getAllPrincipals();

for (Object principal : allPrincipals) {

    if (principal instanceof SpringSecurityAuthentificatedUser) {

        SpringSecurityAuthentificatedUser principalInSession = (SpringSecurityAuthentificatedUser) principal;
        if(id.equals(principalInSession.getUser().getId().toString())){

            // updating the user's authorities
            principalInSession.getUser().setRole(role);
            principalInSession.getAuthorities().clear();
            principalInSession.getAuthorities().add(new SimpleGrantedAuthority(role));

            SpringSecurityAuthentificatedUser springSecurityAuthentificatedUser =
                    new SpringSecurityAuthentificatedUser(principalInSession.getUser(),principalInSession.getUser().getPassword(),principalInSession.getAuthorities());


            SecurityContextHolder.getContext().setAuthentication(
                    new UsernamePasswordAuthenticationToken(springSecurityAuthentificatedUser, principalInSession.getUser().getPassword(), principalInSession.getAuthorities())
            );
        }

    }
}

任何人都可以帮助我吗?

0 个答案:

没有答案