
JavaWeb
文章平均质量分 93
JavaWeb分类专栏主要涵盖使用Java技术来解决Web互联网领域问题的各个方面,如单点登录、鉴权加密、数字签名、加密算法、任务调度等等
墩墩分墩
生活就像是一场精心策划的冒险:是一名不折不扣的“吃货探险家,深谙与喵主子斗智斗勇之道御用铲屎官
通过撸铁徒步旅游对抗烦恼,虐完自己后身心都舒畅,喜欢镜头捕捉那些让人心动的瞬间,~
偶尔写写博客是我与世界对话的窗口,通过思考与分享,穿插些生活小确幸~
展开
-
【SpringBoot】集成SpringSecurity+JWT实现多服务单点登录,原来这么easy
- **单点登录(SingleSignOn,SSO)**,当用户在身份`认证服务器`上登录一次以后,即可**获得访问单点登录系统中其他关联系统和应用软件的权限**,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,`用户只需一次登录就可以访问所有相互信任的应用系统`。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的一种**分布式登录方式**。原创 2023-09-25 16:49:06 · 2765 阅读 · 0 评论 -
【JavaWeb】你这么厉害,知道RBAC权限模型和ABAC权限模型吗?
**ABAC(Attribute Base Access Control)**- 基于 `属性`的权限控制不同于常见的将用户通过某种方式关联到权限的方式,ABAC则**是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断**(可以编写简单的逻辑)。- 属性通常来说分为四类:`用户属性(如用户年龄)`, `环境属性(如当前时间)`, `操作属性(如读取)和对象属性`,所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。原创 2023-09-22 15:49:02 · 2875 阅读 · 0 评论 -
【SpringBoot】自从集成spring-security-oauth2后,实现统一认证授权so easy!
1.将`OAuth2和Spring Security集成`,就可以得到一套完整的安全解决方案。然后通过Spring Security OAuth2构建一个授权服务器来验证用户身份以提供access_token,并使用这个access_token来从资源服务器请求数据。2.搭建授权服务器最重要的是:继承` AuthorizationServerConfigurerAdapter接口 `并在实现类上加注解`@EnableAuthorizationServer`标识这是一个授权服务器原创 2023-04-24 17:36:04 · 1657 阅读 · 3 评论 -
【JavaWeb】一分钟让你学会如何更优雅管理API版本
**1. 接口变动非常大或者整个产品大版本发布**- 此种情况下可以采用URL自带版本的方式,创建新的Controller,甚至部署新的应用服务和nginx。**URL中无版本号**即走`默认`逻辑。**2. 常规的版本升级和BUGFIX**- 一般情况下使用`HTTP Header`中指定的版本号,在`代码逻辑`中进行判断就可满足需求**。Header中无版本号**即走`默认`处理逻辑`。**3. 两种模式同时使用**- URL自带模式用来处理`大版本变动`,当大版本已经升级完成,后续的小需原创 2023-02-01 16:05:25 · 1095 阅读 · 0 评论 -
【JavaWeb】小白也能看懂的服务器推送技术(WebSocket和SSE)
消息推送(push)通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备APP进行的主动消息推送- WebSocket是html5出现的一种在·`TCP连接`上进行`全双工通信`的协议- 浏览器和服务器仅需`一次握手`,就可以建立`持久性的连接`,并进行`双向数据传输`。- WebSocket目前支持ws和wss两种模式,对应HTTP和HTTPS。原创 2023-02-01 14:15:01 · 3563 阅读 · 1 评论 -
【Java工具类】学会MVEL2.0,表达式解析再不怕
MVEL为 `MVFLEX Expression Language`(MVFLEX表达式语言)的缩写,是一种基于`Java语法`,但又有着显著不同的表达式语言。与Java不同的是,MVEL是一种`动态/静态可嵌入`的表达式语言,意味着源代码中不需要`类型限定`。- 简单说是一种`表达式解析器。`我们可以自己写一些表达式,交给mvel进行解析计算,得到这个表达式计算的值。原创 2023-01-29 15:50:43 · 6977 阅读 · 0 评论 -
【SpringBoot】SpringBoot+SpringSecurity+CAS实现单点登录
CAS(Central Authentication Service的缩写,中央认证服务) 是耶鲁大学 Technology and Planning 实验室的 Shawn Bayern 在2002年出的一个开源系统。刚开始名字叫。Yale CAS 1.0的目标只是一个单点登录的系统,随着慢慢公开,功能就越来越多了,就提供了多种认证的方式。从结构上看,CAS 包含两个部分:。只要将开发单点登录的系统集成CAS Client,然后部署好CAS Server ,就可以实现多系统的单点登录。官网地址:https:原创 2022-11-22 14:15:15 · 3117 阅读 · 1 评论 -
【JavaWeb】关于JWT做认证授权的十万个理由(JSON Web Token)
JWT与Session的差异相同点是,他们都是存储`用户信息`。然而`Session是在服务器端`的,而`JWT是在客户端`的JWT方式将用户状态分散到了`客户端`中,可以明显减轻请服务器的`内存压力`,服务端只需要用`算法解析客户端的token`就可以得到信息原创 2022-11-04 16:49:39 · 762 阅读 · 0 评论 -
【JavaWeb】 负载均衡(Load Balance)的5 种算法实现原理
**使用N个服务器平均分担负载,不会因为某个服务器节点负载高宕机而某个节点闲置的情况。那么负载均衡的前提就是要有多个服务器才能实现,也就是两个以上即可。**- **优点**: 减少服务器的压力,将原本一台服务器索要承受的访问量分给多台,并提高项目的可用性,当一台服务器挂掉的时候不会导致项目瘫痪。......原创 2022-06-06 16:11:04 · 1312 阅读 · 1 评论 -
【JavaWeb】Quartz—任务调度(二)SpringBoot集成Quartz实现分布式任务调度
默认Quartz的触发器,调度器,任务等信息都是放在内存中的,叫做 RAMJobStore。 好处是快速,坏处是一旦系统重启,那么信息就丢失了,就得全部从头来过。所以Quartz还提供了另一个方式,可以把这些信息存放在数据库做,叫做JobStoreTX。 好处是就算系统重启了,目前运行到第几次了这些信息都是存放在数据库中的,那么就可以继续原来的步伐把计划任务无缝地继续做下去。 坏处就是性能上比内存慢一些,毕竟数据库读取总是要慢一些的。原创 2021-05-11 17:24:53 · 1063 阅读 · 2 评论 -
【JavaWeb】Quartz—任务调度(一)从入门到了解Quartz的所有概念
虽然`线程池ScheduledExecutorService`对*Timer进行了改进*,但依然无法满足复杂的定时任务调度场景。- 因此**OpenSymphony**提供了开源任务调度框架:**Quartz**。`Quartz是纯Java实现`,而且作为`Spring的默认调度框架`,由于Quartz的强大的调度功能、灵活的使用方式、还具有`分布式集群能力`,可以说Quartz出马,可以搞定一切定时任务调度!**核心概念:**- **Job表示实现业务逻辑的任务接口**,接口只有一个`execut原创 2021-05-11 17:23:40 · 1165 阅读 · 1 评论 -
【JavaWeb】Quartz—任务调度(三)Quartz2.x内置数据表结构说明
前言因为Quartz 集群依赖于数据库,所以必须首先创建Quartz内置数据表。Quartz内置所有被支持的数据库平台的 SQL 脚本。在 <quartz_home>/docs/dbTables 目录下找到那些 SQL 脚本,这里的<quartz_home>是解压 Quartz 分发包后的目录。这里采用的Quartz 2.2.3版本,总共11张表,不同版本,表个数可能不同。表名序号表名表说明1qrtz_calendars以 Blob 类原创 2021-05-10 17:11:27 · 1525 阅读 · 0 评论 -
【JavaWeb】消息摘要、数字签名与数字证书的区别
**什么是消息摘要?**- `对一份输入数据进行一个不可逆的 Hash计算,生成一个固定长度的 Hash 值`,这个值就是这份数据的`摘要(Digest)`,也称为`指纹`。摘要算法(Digest)又称 `哈希算法(Hash)`**摘要算法**- 常见的摘要算法有 `MD5、SHA-1、SHA-256 `等。**特点:**- `同一个摘要算法,无论输入的数据是什么,输出都是相同长度的值`。 如: MD5,无论数据有多大,输出总是128位的散列值。- 摘要算法是`不可逆的`,只能根据原始数原创 2021-03-26 15:11:15 · 1329 阅读 · 0 评论 -
【JavaWeb】web开发中的绝对路径和相对路径
- 对于`服务端`来说,“/” 代表着的是`web应用的根路径`,即`http://localhost:8080/projectName(当前web应用的上下文路径) ` >应用场景如:`请求转发`,`web.xml中的路径url-pattern路径配置`,都是由`web服务器`来调用执行的。 >- 请求转发:request.getRequestDispacter("/path/a.jsp").forward(request,response):=>则物理地址:http://localhost:80原创 2021-03-06 14:53:32 · 3772 阅读 · 0 评论 -
【JavaWeb】浅谈接口安全设计指南(含源码)
### 1.数据加密我们知道数据在传输过程中是很容易被`抓包`的,如果直接传输比如通过`http协议`,那么用户传输的数据可以被任何人获取,所以必须对数据加密。常见的做法对关键字段加密,比如:用户密码直接通过md5加密。- 现在主流的做法是使用`https协议`,**在http和tcp之间添加一层加密层**`(SSL层)`,这一层负责数据的加密和解密;### 2.数据加签数据加签就是由发送者产生一段无法伪造的一段数字串,来保证数据在传输过程中防止被抓包篡改。你可能会问数据如果已经通过`http原创 2021-02-25 15:03:11 · 1649 阅读 · 1 评论 -
【SpringBoot】使用hibernate-validator实现优雅的参数校验
高效使用hibernate-validator校验框架 分组序列@GroupSequenceProvider、@GroupSequence控制数据校验顺序,解决多字段联合逻辑校验问题【享学Spring MVC】原创 2021-02-23 11:42:37 · 2748 阅读 · 0 评论 -
【JavaWeb】基于SpringBoot的Aop+自定义注解的方式实现接口签名源码
文章目录0.相关依赖1.切面类2.异常处理3.自定义签名注解4.映射请求头签名字段类5.签名工具类6.hibernate-validator校验工具类7.redisTemplate配置类8.测试接口0.相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data原创 2021-02-12 17:00:19 · 1542 阅读 · 15 评论 -
【JavaWeb】如何优雅的实现第三方开放api接口签名(有状态/无状态)
签名流程签名规则线下分配appid和appsecret,不同的调用方分配不同的appid和appsecret加入timestamp(时间戳),5分钟内数据有效加入临时流水号nonce(防止重复提交),至少为10位针对查询接口,流水号只用于日志落地,便于后期日志核查。针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求。加入签名字段signature,所有数据的签名信息。以上字段放在请求头中。签名的生成签名signature字段生成规则所有动态参数 = 请求头部分原创 2021-02-12 16:27:32 · 6270 阅读 · 13 评论 -
【JavaWeb】了解认证、授权、凭证、Cookie、Session、Token、JWT
文章目录一.什么是认证(Authentication)二.什么是授权(Authorization)三.什么是凭证(Credentials)四.Cookie1.什么是Cookie2.Cookie产生的过程3.Cookie存放的位置4.cookie 重要的属性4.1.**Path属性使用**4.2.Domain属性使用5.SessionStorage,LocalStorage五.Session1.什么是Session2.Session产生的过程六.Cookie 和 Session 的区别七.什么是 Token(原创 2020-06-24 16:26:40 · 2018 阅读 · 0 评论 -
【JavaWeb】本地文件传输协议(File://)
一.什么是FIle协议FIle协议也叫本地文件传输协议 ,主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。二.FIle协议基本格式file:///文件路径如: 要打开F盘文件,那么可以在资源管理器或浏览器地址栏中输入:file:///f:/aaa.jpg回车即可如:获取C盘某个文件file:///C:/Users/CLi/AppData/...原创 2020-03-05 16:36:22 · 12187 阅读 · 0 评论 -
【Java基础】加密与安全基础
一.编码算法什么是编码?ASCII码就是一种编码,字母A的编码是十六进制的0x41,字母B是0x42`,以此类推:因为ASCII编码最多只能有127个字符,要想对更多的文字进行编码,就需要用Unicode。而中文的中使用Unicode编码就是0x4e2d,使用UTF-8则需要3个字节编码:因此,最简单的编码是直接给每个字符指定一个若干字节表示的整数,复杂一点的编码就需要根据一个已有的编...原创 2020-02-20 12:38:23 · 1560 阅读 · 4 评论 -
【Java基础】日志系统JDK Logging,Commons Logging,Log4j/Log4j2,Slf4j和Logback基本使用
Log4j的1.x版本虽然已经被广泛使用于很多应用程序中,但由于出现内存泄漏等bug,代码难以维护,以及需要使用老版本的jdk等劣势,在2015年8月已经玩完。它的替代品,SLF4J,Logback,Log4j2对日志框架做了很多必要的改进。SLF4J:SLF4J是众多日志系统的内核,提供统一的接口,不提供具体实现,不是具体可使用可配置的日志系统。Logback:提供了对SLF4J...原创 2020-02-18 18:44:28 · 3884 阅读 · 0 评论 -
【JavaWeb】了解容错,高可用和灾备概念
文章目录容错概念例子高可用概念例子高可用概念总结容错概念容错(fault tolerance)指的是, 发生故障时,系统还能继续运行。例子飞机有四个引擎,如果一个引擎坏了,剩下三个引擎,还能继续飞,这就是“容错”。同样的,汽车的一个轮子扎破了,剩下三个轮子,也还是勉强能行驶。容错的目的是,发生故障时,系统的运行水平可能有所下降,但是依然可用,不会完全失败。高可用概念高...原创 2019-11-18 17:25:31 · 643 阅读 · 2 评论 -
【JavaWeb】什么是前后台分离?
1、首先,什么是前后台分离,通俗点说就是前台是前台,后台是后台,咦,这是不是说了句废话,当然不是,就是相当于我们把项目分离开,将前台页面抽取出来,单独的放在一个文件夹中,剩下的项目部分只包含后台java代码及需要的资源。如图 图1 图2 没错,这就是前后台分离,在开发的过程中,前端工程师是需要画出一个个特效和强大功能的页面,后台开发人员只...原创 2019-07-17 14:29:39 · 1534 阅读 · 0 评论 -
JavaWeb=>Web入门的基本常识
什么是纯C架构系统完全脱离网络就可独立使用的软件系统(即客户端C,client),这类软件不受限于网络,只依赖于操作系统。如:PC上的word、视频播放器等软件。客户端与服务端服务端,是可以通过网络访问的,接受/处理客户端数据的,为客户端提供数据的服务器+Web服务。客户端,即可以与指定服务端通过网络交互数据的纯C架构软件。如:智能用电系统(C端:每户的智能电表;S端:电力数据...原创 2019-10-20 18:45:02 · 230 阅读 · 0 评论