前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[原创]SpringSecurity控制授权(鉴权)功能介绍

[原创]SpringSecurity控制授权(鉴权)功能介绍

作者头像
Dream城堡
发布2019-05-14 15:02:12
7590
发布2019-05-14 15:02:12
举报
文章被收录于专栏:Spring相关Spring相关
1.spring security 过滤器链

​ spring security中的除了用户登录校验相关的过滤器,最后还包含了鉴权功能的过滤器,还有匿名资源访问的过滤器链,相关的图解如下:

image

2.控制授权的相关类

​ 这里是整个spring security的过滤器链中的授权流程中控制权限的类的相关图示:

image

​ 这里主要是从AccessDecisionVoter的投票者(译称)把信息传递给投票管理者AccessDecisionManager,最终来判断是过还是不过(也就是有没有权限).有两种可能的类:

​ 1.不管有多少请求投票不过,只要有一个过就可以通过(UnanimousBased);

​ 2.不管有多少请求投票通过,只要有一个不通过就不让通过(AffirmativeBased);

​ 3.比较投通过和不通过的个数,谁多久就按照谁的方式来(Consensusbased).

​ 这里可以可能听起来有点绕,但实际上就是三种控制权限的方式类,我们可以认为Spring security已经帮我们做好了最终的判断,我们只需要当一个旁观者即可.

​ 我们再来关注SecurityContextHolder这个类,他会将我们的权限信息封装到Authentication中,SecurityConfig则是相关的Spring security的配置信息,这个类会将相关的信息传递到ConfigAttribute中.

3.配置简单的权限

​ 这个在身份信息固定,并且不会经常变动的情况下可以按照如下配置,否则不建议这么做,这里只适用于简单的场景.

MyUserDetailsService:

代码语言:javascript
复制
private SocialUserDetails buildUser(String userId) {
        // 根据用户名查找用户信息
        //根据查找到的用户信息判断用户是否被冻结
        /**
         * 可以从数据库查出来用户名和密码进行比对,为了方便我这里就直接固定了
         */
        String password = passwordEncoder.encode("123456");
        logger.info("数据库密码是:"+password);
        //注意这里配置角色的时候需要加ROLE_前缀
        return new SocialUser(userId, password,
                true, true, true, true,
                AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_ADMIN"));
    }

BrowserSecurityConfig:

代码语言:javascript
复制
//这里是硬编码权限 只限于简单的用户权限 这里的角色名称严格区分大小写
   //这里可以指定HttpMethod  如HttpMethod.GET,
    .antMatchers("/user/**").hasRole("ADMIN")
        .anyRequest()     //所有请求
        .authenticated() //都需身份认证
4.项目git地址

(喜欢记得点星支持哦,谢谢!)

https://github.com/fengcharly/spring-security-oauth2.0

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.spring security 过滤器链
  • 2.控制授权的相关类
  • 3.配置简单的权限
  • 4.项目git地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档