SpringSeciurty是一个基于Spring框架的安全性认证和访问控制框架,主要用于保护Web应用程序
主要作用:帮助我们进行登录的认证,和项目中涉及到权限时进行管理操作
框架流程:
1.在工程中的pom.xml里面添加依赖
2.创建一个SecurityConfig.java配置类,在里面重写configure方法
3.在方法中配置白名单
4.创建UserDetailServiceIml实现类,在里面配置正确的用户密码
5.将默认的密码编码器设置为无加密
6.配置自己的登录界面
7.使用自己的登录界面时,security框架的登录认证流程不会自动启动,需要我们在UserController处理login请求时手动开启,手动开启时需要用到认证管理器,在Security配置类中进行配置
8.关闭跨域攻击防御
9.在UserDetailServiceImpl里面添加从数据库中查询数据的代码
10. 当登录失败时security框架排除了两种异常,需要在全局异常处理类中添加处理方法
Security框架认证流程
1.在SecurityConfig配置类中配置好白名单,设置登录界面,关闭跨域攻击防御策略
2.当客户端请求的路径不在白名单里面,Security框架会自动将请求重定向到登录界面
3.在login.html登录界面中向/login地址发出登录请求时,服务器中UserController里面的login方法处理该请求
4.在login方法中通过认证管理器manager启动认证,将认证结果保存到Security上下问问呢对象中
5.当manager启动认证流程后会自动调用UserDetailServiceImpl里面的loadUserByUsername方法,在方法内部调用UserMapper里面的查询方法,通过用户名查询到UserVO,如果查询不到return null,此时Security框架会排除异常代表用户名不存在,需要在全局异常处理中进行处理,如果查询到的密码和用户名输入的密码一致,则不会排除任何异常,UserController中的login方法会执行完,给客户端响应登录成功的信息,如果登录的密码错误,Security框架会抛出代表密码错误的异常,此时也需要再全局异常处理中进行处理.