spring-security探索

探索的起因

因为系统需要,需要搭建一个统一用户系中心和权限系统。经过多番了解,找到了spring-security,针对官方文档加上一些零散的资料和自己的理解来表达自己对spring-security的看法。

简单了解security

这是spring关于访问控制,鉴权封装的一个模块,官网比较明确的给出了比较简单的模板实现
spring-security探索_第1张图片
这个实现是最简单的实现,具体做法就是启用注解@EnableWebSecurity 表示开启security,模板比较粗暴,对于所有进来的请求都做了拦截,并且要等输入账号密码登录,如图账号 user 密码 password,同时用户角色是一个普通的USER。 spring封装了一个登录页面,便于交互,没有什么好说的。

接下去我们需要重点关注官方提到的几个类, UserDetailsService,WebSecurityConfigurerAdapter,AuthenticationProvider,AuthenticationManagerBuilder,WebSecurity,HttpSecurity.

  1. UserDetailsService 是一个接口,里面只有一个方法loadUserByUsername(String var1) 见名知意,这个方法我们可以写一个类去实现, 结合实际场景,我们会根据username(账号名称、用户名称)去查询相关的数据库内容,同时包装成UserDetails对象返回。 这个在效验账号信息的时候会用到,通过比对账号密码判断是否合法等。
  2. WebSecurityConfigurerAdapter,这个类包含了security很多过滤的默认实现。这里重点我只关注了几个方法
    spring-security探索_第2张图片
    这三个方法表示我们对security请求过程的一系列处理,例如:
    spring-security探索_第3张图片
    spring-security探索_第4张图片
    spring-security探索_第5张图片
    最常用的是 HttpSecurity 和 AuthenticationManagerBuilder,主要表达了对于访问过程的过滤和用户权限的管理。围绕着三个类继续展开,我们可以继续接触到security关于过滤链的一些设计。在官网上对这部分描述不多,更多的是介绍了security和其他模块的整合,比如有LDAP,OAuth2。

用途

security似乎需要你把前端的模块搬到整个后端中,这样它才能对你的资源进行控制(某个用户有访问某个连接地址的权限,某个前端模块的权限,某些静态资源的访问等)。
对于这个结论,我想研究一下前后端分离的情况下如何使用或者有没有优雅的做法。

后续更新…

你可能感兴趣的:(java,java)