Spring Security 安全框架
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。Spring Security致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义权限控制要求。
地球村公民
这个作者很懒,什么都没留下…
展开
-
Java Spring Security 安全框架:(十七)Spring Security 中 CSRF
Spring Security 中 CSRF1.什么是 CSRF2.Spring Security 中 CSRF2.1 实现步骤2.1.1 编写控制器方法2.1.2 新建 login.html2.1.3 修改配置类从刚开始说明 Spring Security 时,在配置类中一直存在这样一行代码:http.csrf().disable();如果没有这行代码导致用户无法被认证。这行代码的含义是:关闭 csrf 防护1.什么是 CSRFCSRF(Cross-site request forgery)跨原创 2020-10-12 11:37:23 · 469 阅读 · 0 评论 -
Java Spring Security 安全框架:(十六)退出登录
退出登录1.退出实现2.logout 其他常用配置源码解读2.1 addLogoutHandler(LogoutHandler)2.2 clearAuthentication(boolean)2.3 invalidateHttpSession(boolean)2.4 logoutSuccessHandler(LogoutSuccessHandler)用户只需要向 Spring Security 项目中发送/logout 退出请求即可1.退出实现实现退出非常简单,只要在页面中添加/logout 的原创 2020-10-12 11:27:58 · 511 阅读 · 0 评论 -
Java Spring Security 安全框架:(十五)Thymeleaf 中 Spring Security 的使用
Thymeleaf 中 Spring Security 的使用1.获取属性1.1 实现步骤1.1.1 新建 demo.html1.1.2 编写 demo.html1.1.3 编写控制器2.权限判断2.1 不同权限的用户显示不同的按钮2.1.1 设置用户角色和权限2.1.2 控制页面显示效果Spring Security 可以在一些视图技术中进行控制显示效果。例如: JSP 或 Thymeleaf。在非前后端分离且使用 Spring Boot 的项目中多使用 Thymeleaf 作为视图展示技术Thym原创 2020-10-12 11:21:53 · 487 阅读 · 0 评论 -
Java Spring Security 安全框架:(十四)Remember Me 功能实现
Remember Me 功能实现1.添加依赖2.配置数据源3.编写配置4.修改 SecurityConfig5.在客户端页面中添加复选框6.有效时间Spring Security 中 Remember Me 为“记住我”功能,用户只需要在登录时添加 remember-me 复选框,取值为 true。Spring Security 会自动把用户信息存储到数据源中,以后就可以不登录进行访问1.添加依赖Spring Security 实现 Remember Me 功能时底层实现依赖 Spring-JD原创 2020-10-12 11:12:46 · 396 阅读 · 0 评论 -
Java Spring Security 安全框架:(十三)基于注解的访问控制
基于注解的访问控制1.@Secured1.1 实现步骤1.1.1 开启注解1.1.2 在控制器方法上添加@Secured 注解1.1.3 配置类2.@PreAuthorize/@PostAuthorize2.1 实现步骤2.1.1 开启注解2.1.2 添加@PreAuthorize在 Spring Security 中提供了一些访问控制的注解。这些注解都是默认是都不可用的,需要通过@EnableGlobalMethodSecurity 进行开启后使用。如果设置的条件允许,程序正常执行。如果不允许会报原创 2020-10-12 11:00:25 · 477 阅读 · 0 评论 -
Java Spring Security 安全框架:(十二)基于表达式的访问控制
基于表达式的访问控制1.access()方法使用1.1 以 hasRole 和 permitAll 举例2.使用自定义方法2.1 新建接口及实现类2.2 修改配置类1.access()方法使用之前的登录用户权限判断实际上底层实现都是调用 access(表达式)可以通过 access()实现和之前学习的权限控制完成相同的功能1.1 以 hasRole 和 permitAll 举例下面代码和直接使用 permitAll()和 hasRole()是等效的。2.使用自定义方法虽然这里面已原创 2020-10-12 10:51:34 · 380 阅读 · 1 评论 -
Java Spring Security 安全框架:(十一)自定义 403 处理方案
自定义 403 处理方案1.新建类2.修改配置类使用 Spring Security 时经常会看见 403(无权限),默认情况下显示的效果如下:而在实际项目中可能都是一个异步请求,显示上述效果对于用户就不是特别友好了。Spring Security 支持自定义权限受限。1.新建类新建类实现 AccessDeniedHandler@Componentpublic class MyAccessDeniedHandler implements AccessDeniedHandler { @原创 2020-10-12 10:47:08 · 1290 阅读 · 0 评论 -
Java Spring Security 安全框架:(十)角色权限判断
角色权限判断1.hasAuthority(String)2.hasAnyAuthority(String ...)3.hasRole(String)4.hasAnyRole(String ...)5.hasIpAddress(String)除了之前讲解的内置权限控制。Spring Security 中还支持很多其他权限控制。这些方法一般都用于用户已经被认证后,判断用户是否具有特定的要求1.hasAuthority(String)判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建 Us原创 2020-10-12 10:44:03 · 1950 阅读 · 0 评论 -
Java Spring Security 安全框架:(九)内置访问控制方法介绍
内置访问控制方法介绍1.permitAll()2.authenticated()3.anonymous()4.denyAll()5.rememberMe()6.fullyAuthenticated()Spring Security 匹配了 URL 后调用了 permitAll()表示不需要认证,随意访问。在 Spring Security 中提供了多种内置控制1.permitAll()permitAll()表示所匹配的 URL 任何人都允许访问2.authenticated()auth原创 2020-10-12 10:39:00 · 384 阅读 · 0 评论 -
Java Spring Security 安全框架:(八)访问控制 url 匹配
访问控制 url 匹配1.anyRequest()2.antMatcher()3.regexMatchers()4.mvcMatchers()在前面讲解了认证中所有常用配置,主要是对 http.formLogin() 进行操作。而在配置类中 http.authorizeRequests()主要是对 url 进行控制,也就是我们所说的授权(访问控制)。http.authorizeRequests() 也支持连缀写法,总体公式为:url 匹配规则.权限控制方法通过上面的公式可以有很多 url 匹配规则和原创 2020-10-12 09:59:03 · 1596 阅读 · 0 评论 -
Java Spring Security 安全框架:(六)自定义登录页面
自定义登录页面1.编写登录页面2.修改配置类3.编写控制器虽然 Spring Security 给我们提供了登录页面,但是对于实际项目中,大多喜欢使用自己的登录页面。所以 Spring Security 中不仅仅提供了登录页面,还支持用户自定义登录页面。实现过程也比较简单,只需要修改配置类即可1.编写登录页面编写登录页面,登录页面中< form>的 action 不编写对应控制器也可以<!DOCTYPE html><html lang="en"><原创 2020-10-10 17:40:26 · 494 阅读 · 0 评论 -
Java Spring Security 安全框架:(五)自定义登录逻辑
自定义登录逻辑1.编写配置类2.自定义逻辑3.查看效果当 进 行 自 定 义 登 录 逻 辑 时 需 要 用 到 之 前 讲 解 的 UserDetailsService 和 PasswordEncoder。但是 Spring Security 要求:当进行自定义登录逻辑时容器内必须有 PasswordEncoder 实例。所以不能直接 new 对象1.编写配置类新建类 com.dqcgm.config.SecurityConfig 编写下面内容@Configurationpublic c原创 2020-10-10 17:34:05 · 361 阅读 · 0 评论 -
Java Spring Security 安全框架:(四)PasswordEncoder 密码解析器详解
PasswordEncoder 密码解析器详解1.接口介绍2.内置解析器介绍3.BCryptPasswordEncoder 简介4.代码演示Spring Security 要求容器中必须有 PasswordEncoder 实例。所以当自定义登录逻辑时要求必须给容器注入 PaswordEncoder 的 bean 对象1.接口介绍encode():把参数按照特定的解析规则进行解析matches()验证从存储中获取的编码密码与编码后提交的原始密码是否匹配。如果密码匹配,则返回 true;如果不匹配原创 2020-10-10 17:30:15 · 2785 阅读 · 0 评论 -
Java Spring Security 安全框架:(三)UserDetailsService 详解
UserDetailsService 详解1.返回值2.方法参数3.异常当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现 UserDetailsService 接口即可。接口定义如下:1.返回值返回值 UserDetails 是一个接口,定义如下要想返回 UserDetails 的实例就只能返回接口的实现类。Spring Securi原创 2020-10-10 17:25:27 · 4282 阅读 · 0 评论 -
Java Spring Security 安全框架:(七)认证过程其他常用配置
认证过程其他常用配置1.失败跳转1.1 编写页面1.2 修改表单配置1.3 添加控制器方法1.4 设置 fail.html 不需要认证2.设置请求账户和密码的参数名2.1 源码简介2.2 修改配置2.3 修改页面3.自定义登录成功处理器3.1 源码分析3.2 代码实现3.2.1 自定义类3.2.2 修改配置项4.自定义登录失败处理器4.1 源码分析4.2 代码实现4.2.1 新建控制器4.2.2 修改配置类1.失败跳转表单处理中成功会跳转到一个地址,失败也可以跳转到一个地址中1.1 编写页面在原创 2020-10-11 12:27:34 · 224 阅读 · 0 评论 -
Java Spring Security 安全框架:(二)第一个 Spring Security 项目
第一个 Spring Security 项目1.导入依赖2.访问页面1.导入依赖Spring Security 已经被 Spring boot 进行集成,使用时直接引入启动器即可。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>原创 2020-10-10 17:17:48 · 328 阅读 · 2 评论 -
Java Spring Security 安全框架:(一)Spring Security 简介
Spring Security 简介1.概括2.历史1.概括Spring Security 是一个高度自定义的安全框架。利用 Spring IoC/DI 和 AOP 功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。使用 Spring Secruity 的原因有很多,但大部分都是发现了 javaEE 的 Servlet 规范或 EJB 规范中的安全功能缺乏典型企业应用场景。同时认识到他们在 WAR 或 EAR 级别无法移植。因此如果你更换服务器环境,还有大量工作去重原创 2020-10-10 17:11:54 · 1043 阅读 · 1 评论