你有一个应用程序在Spring mvc 3和Spring Security 3.发生我决定提升用户(我有一个用户,角色和user_role表的数据库),但是当我将新角色添加到数据库时出现问题,如何在不注销用户的情况下更新主要权限?寻找答案我发现了这个:
// update database with new role
//... you fill in this part
// update the current Authentication
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority> (auth.getAuthorities());
authorities.add(new GrantedAuthorityImpl('ROLE_NEWROLE'));
Authentication newAuth = new UsernamePasswordToken(auth.getPrincipal(),auth.getCredentials(),authorities)
SecurityContextHolder.getContext().setAuthentication(newAuth);
现在,这种方法看起来不错,但我的问题是,鉴于securitycontextholder将相关信息检索给调用他的当前用户,如何从我的管理员帐户向系统中的每个用户应用上述代码? 我正在使用自己的身份验证提供程序。
答案 0 :(得分:0)
一种选择是实施以下策略:
ConcurrentHashMap
(如果您有多个应用服务器,则使用分布式缓存)来实现。