开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):权限管理-SpringSecurity 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11532
权限管理-SpringSecurity 介绍
目录:
一、框架介绍
二、filter 过滤
三、认证与授权实现思路
四、基本流程
一、框架介绍
Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。
一般来说,Web 应用的安全性包括用户认证《Authentication)和用户授权(Authorization)两个部分。
(1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
(2)用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。
一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。
二、filter 过滤
Spring Security 其实就是用 filter,多请求的路径进行过滤。
(1) 如果是基于 Session,那么 Spring-security 会对 cookie 里的 sessionid 进行解析,找到服务器存储的 sesion 信息,然后判断当前用户是否符合请求的要求。
(2) 如果是 token,则是解析出 token,然后将当前请求加入到 Spring-security 管理的权限信息中去
所以说:Spring Security 其实就是用 filter,多请求的路径进行过滤。
(1) 如果是基于 Session,那么 Spring-security 会对 cookie 里的 sessionid 进行解析,找到服务器存储的 sesion 信息,然后判断当前用户是否符合请求的要求。
(2)如果是 token,则是解析出 token,然后将当前请求加入到 Spring-security 管理的权限信息中去
三、认证与授权实现思路
如果系统的模块众多,每个模块都需要就行授权与认证,所以我们选择基于 token 的形式进行授权与认证,用户根据用户名密码认证成功,然后获取当前用户角色的一系列校限值,并以用户名为 key,权限列表为 value 的形式存入redis 缓存中,根据用户名相关信息生成 token 返回,浏览器将 token 记录到 cookie 中,每次调用 api 接口都默认将 token 携带到 header 请求头中,Spring-security 解析 header 头获取 token 信息,解析 token 获取当前用户名,根据用户名就可以从 redis 中获取权限列表,这样 Spring-security 就能够判断当前请求是否有权限访问。
四、基本流程
(1)建立模块1和模块2
模块1
登录
用户名密码
模块2
(2) redis
key:登录成功用户名
value:用户权限列表
(3) token
查询登录用户权限列表
(4)token 放到 cookie
在 header 放 token 值
(5)spring security
从heaher 获取 token
从 token 获取用户名
拿着用户名从 redis 获取权限列表
(6)由 springsecurity 给当前用户赋予权限,可以进行相应操作中。