微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Oauth2在Web应用程序中切换用户角色

如何解决使用Oauth2在Web应用程序中切换用户角色

我有一个Web应用程序,该应用程序具有Angular前端和Spring Boot作为后端,并使用Oauth2进行身份验证。我已经用存储我的访问令牌的jdbc令牌存储实现了Oauth。 登录到应用程序的用户具有与之关联的不同角色/角色。我们使用户可以从前端在这些角色之间切换。对于他选择的每个角色/角色,我们需要刷新前端应用并向他显示该角色有权访问的视图(包括数据)。

我尝试使用下面的代码将身份验证对象重置为具有新角色的权限,但是此不起作用与随后的由角度生成的API调用一起工作,因为身份验证对象似乎源自每次 oauth_access_token 表。

UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();       
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("Role_i_switch_to"));  
UserDetails userDetails = new org.springframework.security.core.userdetails.User(user.getUsername(),user.getpassword(),authorities);
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails,userDetails.getpassword(),authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);

我尝试再次重新创建令牌,但是由于我们没有对我不起作用的密码。我也已经通过了 SwitchUserFilter ,但我认为这不符合我的要求。

我当时正在考虑将角色存储为前端会话存储的一部分,并将其作为所有API的标头/请求参数传递,但是不确定这是否是实现此目标的正确方法。 有没有一种方法可以使用Oauth2来实现,而不必依赖前端?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。