spring security如何实现用户权限动态刷新?

是用户权限的动态刷新,就是用户的权限被更改了,那么登陆中的用户权限也会被更改,包括用户的密码,权限信息,是需要修改user-service吗?... 是用户权限的动态刷新,就是用户的权限被更改了,那么登陆中的用户权限也会被更改,包括用户的密码,权限信息,是需要修改user-service吗? 展开
 我来答
yangk6641
推荐于2016-11-01
知道答主
回答量:15
采纳率:0%
帮助的人:10.7万
展开全部
可以修改user-service,但不要用认证管理器调用了,自己调用。
认证管理器在认证时通过user-service把权限信息加载到内存中,修改后可通过SecurityContextHolder.getContext().getAuthentication()和setAuthentication(authentication)访问权限。
更多追问追答
追问

有两个问题。

  1. getAuthentication获取到的是此次访问的用户的信息,那么我需要做的是修改别人的权限,怎么做?

  2. Authentication是个接口,那么Security保存的实现类是哪个?

追答

这个问题有点儿复杂


2. Authentication的实现类有很多,如:CasAuthenticationToken, JaasAuthenticationToken, UsernamePasswordAuthenticationToken,取决于你的认证方式。如果使用DaoAuthenticationProvider,就用UsernamePasswordAuthenticationToken实现类。如果所有权


1. 列表同时改,就直接setAuthentication整体改。

可以直接参考AbstractUserDetailsAuthenticationProvider的实现方法,直接new出一个。

    protected Authentication createSuccessAuthentication(Object principal, Authentication authentication,
            UserDetails user) {
        UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(principal,
                authentication.getCredentials(), authoritiesMapper.mapAuthorities(user.getAuthorities()));
        result.setDetails(authentication.getDetails());
        return result;
    }

Spring Security只是提供了一种安全控制的解决方案,根据实际应用不同具体实现细节都需要改的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式