SpringSecurity
这个安全框架的本质就是采用一条很长的过滤链,然后通过配置过滤链进行一系列的操作
Web
核心配置类
继承WebSecurityConfigurerAdapter
密码校验
由于框架有密码校验,默认是没有校验工具的,所有有必要自定义一个校验工具,这个时候可以采用在配置类中使用@Bean加入到容器中,从而就有了密码校验
当然如果不想采用密码校验可以直接return new nopasswordEncoder;
账号设置
内存配置
直接采用inMemoryAuthentication设置username和password
查询数据库
为了简化业户,这时候有必要把业务分离出去,单独写一个类用来查询数据库
这个业务类继承UserDetailService并且重写loadUserByUsername,为了方便注入,可以采用如图所示的操作
具体配置如下
其中如果是为了配置角色,那么在权限列表中就采用ROLE_xxx的方式配置角色,这是框架固定的,必须遵循,不然无法识别。如果是添加权限就可以直接书写权限名字就可以了。最后返回UserDetail的User对象。
然后在配置类中重写
其中userDetailsService就是注入进来的用户,这时候已经设置了用户名和密码,但是还是要用密码验证,
这时就可以采用自己自定义的组件
数据源配置
由于框架的数据源不同,所以这时候配置数据源也是非常有必要的,可以采用在配置类中添加一个bean到容器中,
为了方便可以采用自动建表的方式,这时候就将setCreateTableOnStartup设置为true
注入数据源
然后返回就可以直接注入到容器 里面
其他配置
自定义登录页面
配置没有权限访问跳转自定义页面
退出配置
总配置
微服务
在微服务中采用的路由是gateway网关,存放用户信息的数据库是redis,token采用的jwt技术
redis配置
采用工具
其中MD5是密码加密工具,R是统一返回结果,Response是响应工具
在框架中
自定义四个类,分别是密码校验类,在类里面采用的时候MD5工具,
利用MD5加密,再利用MD5进行加密之后比较。
还有就是jwt生成工具
还有就是退出的配置
没有授权的处理类
过滤器
一个是授权过滤器一个是认证过滤器
授权
认证
可以使用构造器进行注入
UserDetail实体类
实现UserDetails接口
用户信息实体类
框架核心配置类