springboot3整合SpringSecurity实现登录校验与权限认证
一:概述
1.1 基本概念
(1)认证
系统判断身份是否合法
(2)会话
为了避免每次操作都进行认证可将用户信息保存在会话中
session认证
服务端有个session,把 session id给前端,每次请求cookie都带着session id访问服务端
token 认证(服务端不存储token信息)
(3)授权
系统校验有无使用某项功能的权限,授权是在认证后发生的,控制不同的用户能够访问不同的资源
1.2 RBAC
(1)基于角色访问授权
缺点:当需要修改角色权限时就需要修改授权的相关代码(系统可扩展性差)
(2)基于资源的访问控制
二:基于session的认证方式
2.1 实现认证
(1)创建maven工程:创建项目-pom.xml导入依赖-创建config类(使用java类【spring 容器加载类、ServletContext】代替xml文件)
使用注解扫描包和类 ServletContext
加载Spring容器
(2)基于session的认证方式
工具类
Controller
Service
2.2 实现会话
(1)创建key
(2)登录成功后存入session
2.3 实现授权
使用户和权限绑定
(1)service
(2)拦截器
(3)WebCconfig增加拦截器(使拦截器生效)
三:Spring Security
3.1 概述
3.2 创建工程
(1)创建项目-添加依赖
(2)配置类
Spring容器配置
ServletConfig(SpringSecurity提供拦截用户请求授权的功能)
加载Spring容器
3.3 认证功能
(1)查询用户信息
InMemoryUserDetailsManager类似于SQL中的一个临时表或内存数据库,createUser 方法用来创建新的用户,类似于SQL中的INSERT INTO语句, User.withUsername().password().authorities().build()类似于SQL中的VALUES子句,这里指定了新用户的各个属性
(2)密码编码器
(3)安全拦截机制