安全管理框架(Spring Security、Shiro)
文章平均质量分 80
Spring Security、Shiro
plenilune-望月
这个作者很懒,什么都没留下…
展开
-
Spring Security(十一) Spring Security 中 CSRF
从刚开始学习 Spring Security 时,在配置类中一直存在这样一行代码:http.csrf().disable();如果没有这行代码导致用户无法被认证。这行代码的含义是:关闭 csrf 防护。1 什么是 CSRFCSRF(Cross-site request forgery)跨站请求伪造,也被称为“OneClick Attack” 或者 Session Riding。通过伪造用户请求访问受信任站点的非法请求访问。跨域:只要网络协议,ip 地址,端口中任何一个不相同就是跨域请求。客户原创 2020-10-13 18:04:32 · 11236 阅读 · 0 评论 -
Spring Security(十) 退出登录
用户只需要向 Spring Security 项目中发送/logout 退出请求即可。1 退出实现实现退出非常简单,只要在页面中添加/logout 的超链接即可。<a href= "/logout">退出登录</a>为了实现更好的效果,通常添加退出的配置。默认的退出 url 为/logout,退出成功后跳转到/login?logout如果不希望使用默认值,可以通过下面的方法进行修改。http.logout().logoutUrl( "/logout"原创 2020-10-13 15:52:19 · 747 阅读 · 0 评论 -
Spring Security(九) Thymeleaf 中 Spring Security 的使用
Spring Security 可以在一些视图技术中进行控制显示效果。例如:JSP 或 Thymeleaf。在非前后端分离且使用 Spring Boot 的项目中多使用 Thymeleaf 作为视图展示技术。Thymeleaf 对 Spring Security 的 支 持 都 放 在thymeleaf-extras-springsecurityX 中,目前最新版本为 5。所以需要在项目中添加此 jar 包的依赖和 thymeleaf 的依赖。<dependency> <g原创 2020-10-13 15:45:25 · 875 阅读 · 0 评论 -
Spring Security(八) Remember Me 功能实现
Spring Security 中 Remember Me 为“记住我”功能,用户只需要在登录时添加 remember-me 复选框,取值为 true。Spring Security 会自动把用户信息存储到数据源中,以后就可以不登录进行访问。1 添加依赖Spring Security 实 现 Remember Me 功 能 时 底 层 实 现 依 赖Spring-JDBC,所以需要导入 Spring-JDBC。以后多使用 MyBatis 框架而很少直接导入 spring-jdbc,所以此处导入 my原创 2020-10-13 15:09:22 · 273 阅读 · 0 评论 -
Spring Security(七) 基于表达式/注解的访问控制
一、 基于表达式的访问控制1 access() 方法使用之前学习的登录用户权限判断实际上底层实现都是调用access(表达式)可以通过 access()实现和之前学习的权限控制完成相同的功能。 1.1 以 hasRole 和 和 permitAll 举例下面代码和直接使用 permitAll()和 hasRole()是等效的。2 使用自定义方法虽然这里面已经包含了很多的表达式(方法)但是在实际项目中很有可能出现需要自己自定义逻辑的情况。判断登录用户是否具有访问当...原创 2020-09-29 09:11:00 · 923 阅读 · 0 评论 -
Spring Security(六) Spring Security角色权限判断 及 自定义 403 处理方案
一、 角色权限判断除了之前讲解的内置权限控制。Spring Security 中还支持很多其他权限控制。这些方法一般都用于用户已经被认证后,判断用户是否具有特定的要求。1 hasAuthority(String)判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建 User 对象时指定的。下图中 admin 就是用户的权限。admin 严格区分大小写。在配置类中通过 hasAuthority(“admin”)设置具有 admin 权限时才能访问。.antMatcher原创 2020-09-29 09:10:31 · 1866 阅读 · 0 评论 -
Spring Security(五) 访问控制 url 匹配及 内置访问控制方法介绍
一、 访问控制 url 匹配制在前面讲解了认证中所有常用配置,主要是对 http.formLogin()进行操作。而在配置类中 http.authorizeRequests()主要是对 url 进行控制,也就是我们所说的授权(访问控制)。http.authorizeRequests()也支持连缀写法,总体公式为:url 匹配规则. 权限控制方法通过上面的公式可以有很多 url 匹配规则和很多权限控制方法。这些内容进行各种组合就形成了 Spring Security 中的授权。在所有匹...原创 2020-09-28 19:16:04 · 7031 阅读 · 0 评论 -
Spring Security(四) 认证过程常用配置
一、 认证过程其他常用配置1 失败跳转表单处理中成功会跳转到一个地址,失败也可以跳转到一个地址中。1.1 编写页面在 src/main/resources/static 下新建 fail.html 并编写如下内容<!DOCTYPE html><html lang= "en"> <head> <meta charset= "UTF-8"> <title>Title</title> </hea...原创 2020-09-28 18:14:08 · 502 阅读 · 0 评论 -
Spring Security(三) 自定义登录逻辑及登录页面
一、 自定义登录逻辑当进行自定义登录逻辑时需要用到之前讲解的UserDetailsService 和 PasswordEncoder。但是 Spring Security 要求:当进行自定义登录逻辑时容器内必须有 PasswordEncoder 实例。所以不能直接 new 对象。1 编写配置类新建类 com.bjsxt.config.SecurityConfig 编写下面内容@Configurationpublic class SecurityConfig { @Bean pub原创 2020-09-28 17:53:02 · 1660 阅读 · 0 评论 -
Spring Security(二) UserDetailsService 和 PasswordEncoder 密码解析器 详解
一、 UserDetailsService 详解当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现 UserDetailsService 接口即可。接口定义如下:1 返回值返回值 UserDetails 是一个接口,定义如下要想返回 UserDetails 的实例就只能返回接口的实现类。Spring Security 中提供了.原创 2020-09-28 17:32:28 · 5934 阅读 · 0 评论 -
Spring Security(一) Spring Security 简介及 第一个 Spring Security 项目
一、 Spring Security 简介1 概括Spring Security 是一个高度自定义的 安全框架。利用 Spring IoC/DI和 AOP 功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。使用 Spring Secruity 的原因有很多,但大部分都是发现了 javaEE的 Servlet 规范或 EJB 规范中的安全功能缺乏典型企业应用场景。同时认识到他们在 WAR 或 EAR 级别无法移植。因此如果你更换服务器环境,还有大量工作去重新配置.原创 2020-09-28 17:19:31 · 374 阅读 · 0 评论