- 博客(22)
- 问答 (1)
- 收藏
- 关注
原创 Spring Security —09—密码加密
整个事件中最触目惊心的莫过于 CSDN 把用户密码明文存储,由于很多用户是多个网站共用一个密码,因此一个网站密码泄漏就会造成很大的安全隐患。用户注册成功后,保存在数据库中不再是用户的明文密码,而是经过 SHA-256 加密计算的一个字符串,当用户进行登录时,用户输入的明文密码用 SHA-256 进行加密,加密完成之后,再和存储在数据库中的密码进行比对,进而确定用户登录信息是否有效。在前面的案例中,凡是涉及密码的地方,我们都采用明文存储,在实际项目中这肯定是不可取的,因为这会带来极高的安全风险。
2023-08-25 11:44:47 448
原创 Spring Security —08—前后端分离开发认证总结案例
在进行前后端分离认证时,后端接收到的是前端发送过来的post形式的json数据,此时需要在json格式中获取用于登录的用户名和密码,而SpringSecurity中用于。
2023-08-25 11:43:41 127
原创 Spring Security —06—自定义认证数据源
覆盖原有的全局AuthenticationManager,也就是构建出一个空的AuthenticationManager也没有指定的UserDetailService。@Override//重写的父类WebSecurityConfigurerAdapter中的configure方法,使用的也是父类的AuthenticationManagerBuilder总结自定义全局 AuthenticationManager。
2023-08-24 11:08:51 433 1
原创 Spring Security —05—认证用户数据
以后每当有请求到来时,Spring Security 就会先从 Session 中取出用户登录数据,保存到SecurityContextHolder 中,方便在该请求的后续处理过程中使用,同时在请求结束时将 SecurityContextHolder 中的数据拿出来保存到 Session 中,然后将SecurityContextHolder 中的数据清空。的默认存储策略,这种存储策略意味着如果在具体的业务处理代码中,开启了子线程,在子线程中去获取登录用户数据,就会获取不到。
2023-08-22 22:45:09 882 2
原创 Spring Security —03—流程分析
三个认证类之间的关系从上面分析中得知,AuthenticationManager 是认证的核心类,但实际上在底层真正认证时还离不开 ProviderManager 以及 AuthenticationProvider。他们三者关系是样的呢?AuthenticationManager 是一个认证管理器,它定义了 Spring Security 过滤器要执行认证操作。ProviderManager是AuthenticationManager接口的实现类。
2023-08-19 17:20:59 77
原创 Spring Security —01—整体架构
Spring Security是一个功能强大、可高度定制的身份验证和访问控制框架。它是保护基于Spring的应用程序的事实标准。Spring Security是一个面向Java应用程序、提供身份验证和安全性的框架。与所有Spring项目一样,Spring Security的真正威力在于它可以轻松地扩展以满足定制需求。总结:Spring Security是一个功能强大、可高度定制的身份验证和访问控制的框架,或者说是用来实现系统中权限管理的框架。
2023-08-15 21:47:21 37 1
原创 一文搞懂Maven生命周期!!!
site是指生成项目的站点文档,其中包括项目概述、源码测试覆盖率报告、开发者列表等信息。生成站点文档需要进行额外的配置和操作。通常情况下,使用构建工具(如Maven或Gradle)执行"site"命令可以生成项目的站点文档。项目概述:包括项目的描述、目标、功能特性等信息,用于向用户和其他开发人员介绍项目的基本情况和背景。源码测试覆盖率报告:通过运行单元测试并对代码进行分析,生成源码测试覆盖率报告。该报告显示了测试用例对项目代码的覆盖程度,帮助开发人员评估测试的完整性和质量。开发者列表。
2023-07-06 16:34:11 1302 2
原创 并发编程(七)守护线程与用户线程
如果你希望在主线程结束后JVM进程马上结束,那么在创建线程时可以将其设置为守护线程,如果你希望在主线程结束后子线程继续工作,等子线程结束后再让JVM进程结束,那么就将子线程设置为用户线程。
2023-07-06 14:20:26 56 1
原创 并发编程(六)死锁
所以资源的有序性破坏了资源的请求并持有条件和环路等待条件,因此避免了死锁。线程A已经持有了资源2,它同时还想申请资源1,线程B已经持有了资源1,它同时还想申请资源2,所以线程1和线程2就因为相互等待对方已经持有的资源,而进入了死锁状态。有很大关系,使用资源申请的有序性原则就可以避免死锁,那么什么是资源申请的有序性呢?,但是学过操作系统的读者应该都知道,目前只有请求并持有和环路等待条件是可以被破坏的。学过操作系统的朋友应该都知道,死锁的产生必须具备以下四个条件。如何避免线程死锁要想避免死锁,
2023-07-06 11:44:02 57 1
原创 并发编程(五)线程中断
另外从下面的代码可以知道,在interrupted()内部是获取当前调用线程的中断标志而不是调用interrupted()方法的实例对象的中断标志。如果线程A因为调用了wait系列函数、join方法或者sleep方法而被阻塞挂起,这时候若线程B调用线程A的interrupt()方法,线程A会在调用这些方法的地方抛出InterruptedException异常而返回。Java中的线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是被中断的线程根据中断状态自行处理。
2023-07-06 11:21:15 43 1
原创 并发编程(三)线程的等待与通知
在Java中,wait() 是 Object 类的一个方法,当线程调用了某个对象的 wait()方法后,它会暂停执行,让当前线程进入等待状态,并释放对象的锁。当前进程从CPU上下来,使用当前线程的程序计数器记录当前的执行情况并把相应数据存到当前栈中,直到其他线程调用相同对象的 notify() 或 notifyAll()方法来唤醒等待的线程。
2023-07-06 08:44:00 89 1
原创 Class<T>与 Class<?>
前一个表示cla只能指向Integer这种类型,而后一个cl表示可以指向任意类型。我们来定义一个泛型类,便于理解。再向上抽象,可以表示为泛型。
2023-07-04 21:37:29 159
原创 Java 中的接口有什么作用?
我们在想要设计接口时,只是简单的定义了几个方法,通过继承实现的方式越来越多,但是有的接口没有任何方法,例如Serializable、RandomAccess和Cloneable,在查看JDK源码或开源项目源码的时候,这些标记接口的上镜率相当之高,它们不包含任何的方法,但是却广泛的存在。所有的东西都已经被你给规范了。我们看到李四开发的时候想使用张三已经写好的计算器的类,李四想当然的认为计算钱的方法是countMoney, 但是张三写计算器的时候使用的方法是count,那么李四的写的Seller类是错误的。
2023-07-04 21:36:40 107
原创 JAVA类名中的泛型T
这时候你就恍然大悟了,原来这里的T是我们自己的类,而不是泛型啊!如果我们没有一个叫做T的类,那么方法声明就会报错,找不到类T!所以,我们再回到问题,第一个T就是指明了泛型T,而后面2个T都是引用第一个T的类型来使用的!声明的时候就有2个啦!该方法接收M类型的List对象,处理后返回类型N的List对象。该方法对任意的类型M(即泛型):接收M类型的List对象,处理后返回一个M类型的List对象!这个方法签名中有3个T,乍一看第2、3个T都能理解,就是第一个T是什么意思呢?其实第2、3个T我们的理解不准确。
2023-07-04 21:33:47 53
空空如也
winsocket TCP流编程如何实现有效的发送或接收
2021-12-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人