java 切换用户_Springsecurity之SwitchUserFilter切换用户

本文介绍了在Springsecurity 4.2.x版本中如何利用SwitchUserFilter实现超级管理员切换用户的功能。首先,定义switchUserFilter Bean并配置usernameParameter和switchUserUrl,然后在过滤器链中正确放置SwitchUserFilter。接着详细解析了SwitchUserFilter的源码,包括doFilter方法的工作流程,以及如何通过requiresSwitchUser判断请求并进行用户切换。
摘要由CSDN通过智能技术生成

使用的版本是Springsecurity的4.2.x版本。

业务场景是这样的,系统中存在很多用户,超级管理员要有个功能,就是可以切换用户,比如超级管理员,可以切换为系统中的任何一个用户。Spingsecurity提供了一个SwitchUserFilter,我们就用这个来实现功能。

1、先来看怎么使用

List-1.1

定义switchUserFilter这个bean,如下List-1所示。用过Springsecurity的,应该知道UserDetailsService,这里就不再细讲。

usernameParameter的值是userNo,会从HttpServletRequest中获取key为userNo的值,之后用这个值从UserDetailsService中获得UserDetails。

switchUserUrl,SwitchUserFilter是个Filter,会拦截请求,之后判断请求的url是否是switchUserUrl,如果是就执行SwitchUserFilter里面的逻辑,如果不是,就将请求转给后面的Filter。

List-1.1之后,将SwitchUserFilter放在FILTER_SECURITY_INTERCEPTOR之后,为什么呢?因为accessDecisionManager在FILTER_SECURITY_INTERCEPTOR中,即判断是否有访问资源的权限是在FILTER_SECURITY_INTERCEPTOR中,判断过权限之后才到SwitchUserFilter。

List-1.2

...

...

2、SwitchUserFilter的源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值