Spring Security

SpringSceurity(5)---短信验证码登陆功能

♀尐吖头ヾ 提交于 2020-07-28 07:59:15
SpringSceurity(5)---短信验证码登陆功能 有关SpringSceurity系列之前有写文章 1、 SpringSecurity(1)---认证+授权代码实现 2、 SpringSecurity(2)---记住我功能实现 3、 SpringSceurity(3)---图形验证码功能实现 4、 SpringSceurity(4)---短信验证码功能实现 一、短信登录验证机制原理分析 了解短信验证码的登陆机制之前,我们首先是要了解用户账号密码登陆的机制是如何的,我们来简要分析一下Spring Security是如何验证基于用户名和密码登录方式的, 分析完毕之后,再一起思考如何将短信登录验证方式集成到Spring Security中。 1、账号密码登陆的流程 一般账号密码登陆都有附带 图形验证码 和 记住我功能 ,那么它的大致流程是这样的。 1、 用户在输入用户名,账号、图片验证码后点击登陆。那么对于springSceurity首先会进入短信验证码Filter,因为在配置的时候会把它配置在 UsernamePasswordAuthenticationFilter之前,把当前的验证码的信息跟存在session的图片验证码的验证码进行校验。 2、短信验证码通过后,进入 UsernamePasswordAuthenticationFilter 中,根据输入的用户名和密码信息

真的简单,文本文件逐行处理–用java8 Stream流的方式

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-27 22:43:10
本文中为大家介绍使用java8 Stream API逐行读取文件,以及根据某些条件过滤文件内容 1. Java 8逐行读取文件 在此示例中,我将按行读取文件内容并在控制台打印输出。 Path filePath = Paths.get("c:/temp", "data.txt"); //try-with-resources语法,不用手动的编码关闭流 try (Stream<String> lines = Files.lines( filePath )) { lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace();//只是测试用例,生产环境下不要这样做异常处理 } 上面的程序输出将在控制台中逐行打印文件的内容。 Never store password except in mind. 2.Java 8读取文件–过滤行 在此示例中,我们将文件内容读取为Stream。然后,我们将过滤其中包含单词"password"的所有行。 Path filePath = Paths.get("c:/temp", "data.txt"); try (Stream<String> lines = Files.lines(filePath)){ List<String> filteredLines =

【Spring Boot】Spring Boot之整合Spring security实现JWT权限认证

浪子不回头ぞ 提交于 2020-07-27 21:56:04
一、先看下DaoAuthenticationProvider的认证过程 1、从读取用户名和密码开始的身份验证Filter将一个UsernamePasswordAuthenticationToken传递给由ProviderManager实现的AuthenticationManager。 2、ProviderManager被配置为使用DaoAuthenticationProvider类型的AuthenticationProvider。 3、第三个DaoAuthenticationProvider从UserDetailsService中查找用户详细信息。 4、DaoAuthenticationProvider使用PasswordEncoder验证上一步返回的用户详细信息上的密码。 5、当身份验证成功时,返回的身份验证类型为UsernamePasswordAuthenticationToken,其主体是已配置的UserDetailsService返回的用户详细信息。最终,返回的UsernamePasswordAuthenticationToken将由身份验证过滤器在securitycontext中设置。 二、过程分析 1)登陆认证 项目中,我们如何实现这个过程 1、自定义UserDetailsService(用于提供用户信息一般通过用户名从数据库查询) /* * * 用户登录认证信息查询

Java 后端开发学习路线

你离开我真会死。 提交于 2020-07-27 09:05:19
编程基础 Java语言 语言基础 基础语法 面向对象 接口 容器 异常 泛型 反射 注解 I/O 图形化(如Swing) JVM 类加载机制 字节码执行机制 jvm内存模型 GC垃圾回收 jvm性能监控与故障定位 jvm调优 并发/多线程 并发编程基础 线程池 锁 并发容器 原子类 juc并发工具类 数据结构和算法 数据结构 字符串 数组 链表 二叉树 堆、栈、队列 哈希 算法 查找 排序 贪心 分治 动态规划 回溯 计算机网络 ARP协议 IP/ICMP协议 TCP/UDP协议 DNS/HTTP/HTTPS协议 Session/Cookie 数据库/SQL SQL语句书写 SQL语句优化 事务以及隔离级别 索引 锁 操作系统 进程/线程 并发/锁 内存管理和调度 I/O原理 设计模式 单例 工厂 代理 策略 模板方法 观察者 适配器 责任链 建造者 开发工具 集成开发环境 Eclipse IDEA VSCode Linux系统 Linux常用命令 基本Shell脚本 代码管理工具 Git SVN 项目管理/构建工具 Maven Gradle 应用框架 后端 Spring家族 Spring IOC AOP SpringMVC SpringBoot 自动配置、开箱即用 整合Web 整合数据库(事务问题) 整合权限 Shiro SpringSecurity 整合各种中间件 缓存 MQ

深入理解 SecurityConfigurer 【源码篇】

寵の児 提交于 2020-07-27 08:58:50
我们来继续撸 Spring Security 源码。 SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。在前面的文章中,松哥曾经多次提到过,Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。 所以我们今天有必要来跟大家把 SecurityConfigurer 从头到尾捋一捋。 1. SecurityConfigurer SecurityConfigurer 本身是一个接口,我们来看下: public interface SecurityConfigurer<o, b extends securitybuilder<o>> { void init(B builder) throws Exception; void configure(B builder) throws Exception; } 可以看到,SecurityConfigurer 中主要是两个方法,init 和 configure。 init 就是一个初始化方法。而 configure 则是一个配置方法。这里只是规范了方法的定义,具体的实现则在不同的实现类中。 需要注意的是这两个方法的参数类型都是一个泛型 B,也就是

使用java8API遍历过滤文件目录及子目录及隐藏文件

给你一囗甜甜゛ 提交于 2020-07-27 00:10:08
1. 使用 Files.list() 迭代目录及其子目录文件 Files.list() 可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); 输出: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java 2. 使用 filter表达式过滤文件 过滤器函数引用,isRegularFile表示普通文件 Files.list(Paths.get(".")) .filter(Files::isRegularFile) //过滤器:只保留普通文件,过滤掉文件目录 .forEach(System.out::println); 输出结果如下: .\filename1.txt .\filename2.txt .\Employee.java 也可以使用lambda表达式进行过滤 Files.list(Paths.get(".")) .filter(s -> s.startsWith("file")) //过滤器:只保留以file开头的文件及目录 .forEach(System.out::println); 3. 使用 Files.newDirectoryStream()迭代目录及其子目录文件 另一种更灵活的遍历目录的方式

Spring Boot 中如何实现 HTTP 认证?

你离开我真会死。 提交于 2020-07-26 05:14:00
HttpBasic 认证有一定的局限性与安全隐患,因此在实际项目中使用并不多,但是,有的时候为了测试方便,开启 HttpBasic 认证能方便很多。 因此松哥今天还是来和大家简单聊一聊 Spring Security 中的 HttpBasic 认证。 本文是 Spring Security 系列第 29 篇,阅读前面文章有助于更好理解本文: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密码怎么解密了 手把手教你定制 Spring Security 中的表单登录 Spring Security 做前后端分离,咱就别做页面跳转了!统统 JSON 交互 Spring Security 中的授权操作原来这么简单 Spring Security 如何将用户数据存入数据库? Spring Security+Spring Data Jpa 强强联手,安全管理只有更简单! Spring Boot + Spring Security 实现自动登录功能 Spring Boot 自动登录,安全风险要怎么控制? 在微服务项目中,Spring Security 比 Shiro 强在哪? SpringSecurity 自定义认证逻辑的两种方式(高级玩法) Spring Security 中如何快速查看登录用户 IP 地址等信息? Spring

Spring Security自定义用户认证

独自空忆成欢 提交于 2020-07-25 06:07:14
在 Spring Boot中开启Spring Security 一节中我们简单搭建了个Spring Boot + Spring Security的项目,认证的用户名和密码都是由Spring Security生成。Spring Security支持我们自定义认证的过程,如处理用户信息获取逻辑,使用我们自定义的登录页面替换Spring Security默认的登录页及自定义登录成功或失败后的处理逻辑等。这里将在上一节的源码基础上进行改造。 自定义认证过程 自定义认证的过程需要实现Spring Security提供的 UserDetailService 接口,该接口只有一个抽象方法 loadUserByUsername ,源码如下: 1 2 3 public interface UserDetailsService { UserDetails loadUserByUsername (String username) throws UsernameNotFoundException ; } loadUserByUsername 方法返回一个 UserDetail 对象,该对象也是一个接口,包含一些用于描述用户信息的方法,源码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public interface UserDetails extends

Spring Security 第一节 简单的使用

◇◆丶佛笑我妖孽 提交于 2020-07-24 00:02:39
security 配置类 @EnableWebSecurity// 启用Sucerity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() //方法有很多子方法,每个子匹配器将会按照声明的顺序起作用。 .antMatchers("/user/h1/**").permitAll() // antMatchers 指定资源路径,permitAll 放行,不进行拦截。 // .antMatchers( "/role/**").hasRole("role") //role 资源必须使用role角色才能访问 // .antMatchers( "/db/**").access("hasRole('ADMIN') and hasRole('DBA')") //同时满足两个角色才可以访问 .anyRequest().authenticated();//其余所有情况需要认证才可以访问 } } 测试控制器 @RestController @RequestMapping("/user") public class

【认证与授权】Spring Security自定义页面

允我心安 提交于 2020-05-09 10:41:46
在前面的篇幅中,我们对认证和授权流程大致梳理了一遍。在这个过程中我们一直都是使用系统生成的默认页面,登录成功后也是直接调转到根路径页面。而在实际的开发过程中,我们是需要自定义登录页面的,有时还会添加各类验证机制,在登录成功后会跳转至指定页面,还会进行各种美化,甚至是前后端分离的方式。这时,就需要我们对自定义登录进行实现。 本章节使用spring-security-custom-login 一、工程准备 1、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>security-study</artifactId> <groupId>cn.wujiwen.security</groupId> <version>0.0.1-SNAPSHOT</version> </parent>