随笔分类 - 学习3
摘要:我们前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。SpringSecurity还为我们提供了其它方法例如:hasAnyAuthority,hasRole,hasAnyRole等。 这里我们先不急着去介绍这些方法,我们先去理解hasAutho
阅读全文
摘要: 浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。 同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。 前后端分离项目,前端项目和后端项目一般都不是同源的,所以肯定会存在跨域请
阅读全文
摘要: 我们希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。 在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionT
阅读全文
摘要: 我们只需要根据用户id去查询到其所对应的权限信息即可 所以我们可以先定义个mapper,其中提供一个方法可以根据userid查询权限信息 创建对应的mapper文件,定义对应的sql语句 在application.yml中配置mapperXML文件的位置 然后我们可以在UserDetai
阅读全文
摘要:RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型 准备工作 创建数据库表 CREATE TABLE `sys_menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT
阅读全文
摘要:数据库校验用户 从之前的分析我们可以知道,我们可以自定义一个UserDetailsService,让SpringSecurity使用我们的UserDetailsService。我们自己的UserDetailsService可以从数据库中查询用户名和密码 数据库 CREATE TABLE `sys
阅读全文
摘要:限制访问资源所需权限 SpringSecurity为我们提供了基于注解的权限控制方案,这也是我们项目中主要采用的方式。我们可以使用注解去指定访问对应的资源所需的权限。 但是要使用它我们需要先开启相关配置 我们前面在写UserDetailsServiceImpl的时候说过,在查询出用户后还要获
阅读全文
摘要:权限系统的作用 例如一个学校图书馆的管理系统,如果是普通学生登录就能看到借书还书相关的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能。但是如果是一个图书馆管理员的账号登录了,应该就能看到并使用添加书籍信息,删除书籍信息等功能。 总结起来就是不同的用户可以使用不同的功能。这就是权
阅读全文
摘要: 我们需要自定义一个过滤器,这个过滤器会去获取请求头中的token,对token进行解析取出其中的userid。 使用userid去redis中获取对应的LoginUser对象。 然后封装Authentication对象存入SecurityContextHolder 退出登陆 我们只需
阅读全文
摘要:实际项目中我们不会把密码明文存储在数据库中。 默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password 。它会根据id去判断密码的加密方式。但是我们一般不会采用这种方式。所以就需要替换PasswordEncoder。 我们一般使用SpringSecurity
阅读全文
摘要:1导入依赖 <!--redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!
阅读全文
摘要:Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。 AuthenticationManager接口:定义了认证Authentication的方法 UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法
阅读全文
摘要:登录校验流程 SpringSecurity完整流程 SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。这里我们可以看看入门案例中的过滤器。 图中只展示了核心过滤器,其它的非核心过滤器并没有在图中展示。 UsernamePasswordAuthentica
阅读全文
摘要:我们先要搭建一个简单的SpringBoot工程 导入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0<
阅读全文
摘要:Spring Security 1,是Spring家族中的一个安全管理框架 相比与另外一个安全框架Shiro 它提供了更丰富的功能 市区资源也比Shiro丰富 2,一般来说中大小的项目都使用SpringSecurity来做安全框架 小项目有Shiro的比较多 因为相比 与SpringSecurity
阅读全文
摘要:GET请求 1携带数据 GET 请求不能通过请求体携带数据 但可以通过请求头携带 2数据编码 如果携带的数据是非英文字母的话 比如说汉字 就需要编码之后再发送给后端 不然会造成乱码问题 可以使用 encodeURLComponet()编码 POST请求 1携带数据 POST请求主要通过请求体携带数据
阅读全文
摘要:XMLHttpRequest Ajax想要事项浏览器与服务器之间的异步通信 需要依靠XMLHttpRequest,它是一个构造函数 不论是 XMLHttpRequest 还是Ajax都没有具体的某种数据格式绑定 Ajax的使用步骤 创建xhr对象 const xhr = new XMLHttpReq
阅读全文
摘要:localStorage 浏览器存储数据的一种方式 存储在用户本地 不会发送到服务器端 单个域名下的总大小有限制(一般最大5M左右) localStorage的基本用法 removeltem() localStorage.removeltem(‘ username ’) clar() localSt
阅读全文
摘要:Cookie 浏览器存储数据的一种方式 存储在用户本地,而不是存储在服务器上 可以随着浏览器每次请求发送到服务器端 Cookie用法 写入Cookie document.cookie = 'username=alex;max-age=5'; document.cookie = 'age=18;dom
阅读全文