springboot依赖
<!--spring security--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
特点
1、和spring无缝整合
2、全面的权限控制
3、转为Web开发而设计
1)旧版本不能脱离Web环境使用
2)新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独引入核心模块就可以脱离 Web 环境
4、重量级
1、轻量级
2、通用性
1)好处:不限于Web环境,可以脱离Web环境使用
2)缺陷:在Web环境下一些特定的需求需要手动编写代码实现
新建springboot工程或moudle,添加web和security依赖,写一个Controller,快速测试一下,会在启动目录中看到随机生成的密码,用户名默认为user
本质就是一个过滤链
从项目的启动日志就可以看到
可以看到就是一个过滤器
核心验证放行
super.beforeInvocation(fi) 表示查看之前的 filter 是否通过。 fi.getChain().doFilter(fi.getRequest(), fi.getResponse());表示真正的调用后台的服务。
ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常
自从有了springboot之后,对于spring security提供了自动化配置方案,可以使用较少的配置来使用spring security
查询数据库用户名和密码的过程
1、创建类继承UserNamePasswordAuthenticationFilter,重写是三个方法
2、创建类实现UserDetailsService 接口,编写查询过程,返回User对象,这个User对象是框架自带的
用于返回User中密码的加密
1、设置登录的用户名和密码
1)通过配置文件
2)通过配置类
3)自定义编写实现类