自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

自能生羽翼,何必仰云梯

自能生羽翼,何必仰云梯

  • 博客(180)
  • 收藏
  • 关注

原创 Java操作Influxdb2.x

经过测试发现了问题,注意这个TOKEN是数据库配置的TOKEN虽然可以连接到数据库并成功插入数据,但是并不具备访问的权限的,也就是说只能保存不能进行其他操作。这四个key的值就对应的是JAVA应用程序中yaml中的配置的四个属性值,分别是url、token、org、bucket。应用程序通过依赖中的API来访问的库,报错的原因其实就是缺少了最重要的API访问权限配置,网上的资料里没讲这块,贼坑。点击创建后,会弹出生成的API访问的TOKENS,该TOKENS直接替换掉yaml配置文件中的token即可。

2023-09-15 18:01:39 1782 9

原创 人脸认证Utils

【代码】人脸认证Utils。

2023-05-10 12:15:36 197 1

原创 DateUtils

【代码】DateUtils。

2023-05-10 11:03:23 198

原创 19.SpringSecurity存在的问题及解决方案

一般情况下 ,Spring Security 应用在一个单体项目中,此时只存在一个独立的项目,你访问一个资源,需要输入用户名和密码就行了随着软件环境和需求的变化,软件的架构通常都会由单体结构演变成具有分布式架构的分布式系统。而分布式系统的每个服务都会有认证、授权的需求。如果每个服务都实现一套认证逻辑,就会非常冗余并且不现实。而针对分布式系统的特点,一般就会需要一套独立的第三方系统来提供统一的授权认证服务。

2022-09-14 18:26:01 992

原创 4.Knife4j

swagger作为一款API文档生成工具,虽然功能已经很完善了,但是还是有些不足的地方。偶然发现knife4j弥补了这些不足,赋予了Swagger更多的功能。knife4j是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,提供了简洁、强大的接口文档体验。knife4j完全遵循了springfox-swagger中的使用方式,并在此基础上做了增强功能,如果你用过Swagger,你就可以无缝切换到knife4j。

2022-09-14 10:15:19 193

原创 3.Swagger3 API信息配置

   默认配置,显示的API信息如下:   基础信息配置后:以上是直接扫描所有接口的配置,如果需要分组开发,则设置两个 Docket 和两个 ApiInfo分别设置不同的组合包扫描路径,这里不做演示了springfox.documentation.service.ApiInfo.java 是主要的信息配置类,我们实际上就是重写了这个配置类的默认配置而已

2022-09-13 22:57:39 617

原创 2.Swagger3项目实例

依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency>

2022-09-13 22:27:08 243

原创 1.Swagger3 简介

Swagger(丝袜哥)是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。前后端分离的项目,接口文档的存在十分重要。与手动编写接口文档不同,swagger是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率实在太低。与swagger2相比新版的swagger3配置更少,使用更加方便。

2022-09-13 21:50:59 589

原创 18.SpringSecurity-web权限方案-CSRF功能

CSRF 理解  跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。  跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些

2022-05-07 17:11:04 333

原创 17.SpringSecurity-web权限方案-自动登录(功能实现)

创建数据库表CREATE TABLE `persistent_logins` ( `username` varchar(64) NOT NULL, `series` varchar(64) NOT NULL, `token` varchar(64) NOT NULL, `last_used` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`series`)) ENG

2022-04-26 10:48:10 890

原创 16.SpringSecurity-web权限方案-自动登录(原理分析)

实现原理  1.首次登录游览器保存cookie加密串Token,数据库保存cookie加密串及用户信息;  2.再次访问,通过游览器中保存的cookie加密串获取数据库中的用户信息,并进行认证登录;具体流程源码  之前有讲过UsernamePasswordAuthenticationFilter是过滤器链中的其中之一,其作用是对/login 的 POST 请求做拦截,校验表单中用户名,密码。  attemptAuthentication方法就是其具体的实现,重点不是这里,是校验之后的逻辑,所

2022-04-26 10:36:43 344

原创 15.SpringSecurity-web权限方案-用户注销

success.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><h1>登录成功!</h1><a href="/api/auth/logout">退出</a></body>&

2022-04-24 22:05:31 216

原创 14.SpringSecurity-web权限方案-用户授权(注解使用)

@Secured  判断是否具有角色,另外需要注意的是这里匹配的字符串需要添加前缀ROLE_;  使用注解先要开启注解功能,在配置类或者启动类,一般在启动类上@MapperScan({"net.master.security.app.masterspringsecurity.dao"})@SpringBootApplication@EnableGlobalMethodSecurity(securedEnabled=true)public class App { public stati

2022-04-24 22:01:38 422

原创 13.SpringSecurity-web权限方案-用户授权(基于角色访问控制)

hasRole方法  如果用户具备给定角色就允许访问,否则出现 403。  如果当前主体具有指定的角色,则返回 true。  1.在WebSecurityConfig.configure(HttpSecurity http)方法中,增加如下配置://当前登录用户,只有具备sale角色才可以访问这个路径.antMatchers("/test/index").hasRole("sale")  看源码,是将给定的值增加了一个前缀,变成了ROLE_saleprivate static String

2022-04-11 23:43:25 252

原创 12.SpringSecurity-web权限方案-用户授权(基于权限访问控制)

hasAuthority方法  如果当前的主体具有指定的权限,则返回 true,否则返回 false;  1.在WebSecurityConfig.configure(HttpSecurity http)方法中,增加如下配置://当前登录用户,只有具备admins权限才可以访问这个路径.antMatchers("/test/index").hasAuthority("admins")  2.在UserDetailsService的实现类中赋予admins权限//权限List<Grant

2022-04-11 23:40:51 311

原创 11.SpringSecurity-web权限方案-用户认证(自定义用户登录页面)

WebSecurityConfig配置/** * anyRequest | 匹配所有请求路径 * access | SpringEl表达式结果为true时可以访问 * anonymous | 匿名可以访问 * denyAll | 用户不能访问 * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录) * hasAnyAuthority

2022-04-11 23:37:50 372

原创 10.SpringSecurity-web权限方案-用户认证(查询数据库完成认证)

pom依赖<?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 https://maven.apache.org/xsd/maven

2022-04-11 23:34:36 493

原创 9.SpringSecurity-web权限方案-用户认证(设置用户名密码)

方式一,在 application.propertiesspring.security.user.name=userspring.security.user.password=123321方式二,编写实现类继承WebSecurityConfigurerAdapter  类图如下:  简单案例(不实用,只是举个例子):@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {

2022-04-11 23:30:06 393

原创 8.SpringSecurity-UserDetailsService、PasswordEncoder

UserDetailsService接口讲解  当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。 所以我们要通过自定义逻辑控制认证逻辑。  如何做呢?  在过滤器链中有一个UsernamePasswordAuthenticationFilter过滤器是专门校验表单中用户名,密码的,但是这个是默认的。  所以我们需要创建一个类继承然后重写它的attemptAuthentication方法,来获取传递进来的用户名和密.

2022-03-30 22:36:13 1219

原创 7.SpringSecurity-基本原理(过滤器加载过程)

  使用SpringSecurity配置过滤器DelegatingFilterProxy;  本质上来说DelegatingFilterProxy就是一个Filter,其间接实现了Filter接口,但是在doFilter中其实调用的从Spring 容器中获取到的代理Filter的实现类delegate。DelegatingFilterProxy原理  DelegatingFilterProxy根据targetBeanName从Spring 容器中获取被注入到Spring 容器的Filter实现类,在

2022-03-30 22:09:39 685

原创 6.SpringSecurity-基本原理(过滤器链)

  SpringSecurity 本质是一个过滤器链:  从启动是可以获取到过滤器链:org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilterorg.springframework.security.web.context.SecurityContextPersistenceFilterorg.springframework.security.web.header.HeaderWr

2022-03-30 21:55:37 245

原创 5.spring security-入门案例

创建案例  pom:<?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 https://maven.apache.org/xsd

2022-03-30 21:50:01 392

原创 4.spring security-框架概述

概要  Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。  正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是 Spring Security 重要核心功能。  

2022-03-30 21:44:54 2028

原创 3.基本概念-RBAC

基于角色的访问控制  RBAC基于角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经理可以查询企业运营报表,查询员工工资信息等,访问控制流程如下:  根据上图中的判断逻辑,授权代码可表示如下:if(主体.hasRole("总经理角色id")){查询工资}  如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“判断用户的角色是否是总经理或部门经理”,修改代码如下:if(主体.hasRole("总经理角色id

2022-03-29 22:15:52 220

原创 2.基本概念-授权的数据模型

授权的数据模型  如何进行授权即如何对用户访问资源进行控制,首先需要学习授权相关的数据模型。  授权可简单理解为Who对What(which)进行How操作,包括如下:  Who,即主体(Subject),主体一般是指用户,也可以是程序,需要访问系统中的资源。  What,即资源(Resource),如系统菜单、页面、按钮、代码方法、系统商品信息、系统订单信息等。系统菜单、页面、按钮、代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个URL;系统商品信息、系统订单信息都属于实体资源(

2022-03-29 22:12:19 175

原创 1.基本概念-认证授权会话

什么是认证  进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。  系统为什么要认证?  认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。  认证 :用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式

2022-03-29 22:09:40 150

原创 5.Websocket自定义握手响应(源码分析)

为何自定义握手  在上篇的文章测试中我们使用参数123321作为用户的userId来进行通信;  实际业务中,一般使用登录用户的userId、userName、token等信息来自定义握手规则,并实现客户端和服务端的点对点信息推送或者广播推送;@ServerEndpoint注解的源码  WebSocketServer 中我们应用了@ServerEndpoint注解,来看看源码package javax.websocket.server;@java.lang.annotation.Retenti

2022-03-25 18:20:30 1281

原创 4.JavaScript版本前端demo

html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><input type="text" value="123321" id="message" placeholder="请输入消息"><button id="send"&

2022-03-25 18:00:42 2851

原创 3.WebSocketServer及其它代码

WebSocketServer配置@Slf4j@ServerEndpoint(value = "/server/{userId}")@Componentpublic class WebSocketServer { /**静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。*/ private static int onlineCount = 0; /**concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。*/ priv

2022-03-25 17:56:34 705

原创 2.WebSocketConfig配置

开启WebSocket支持@Configurationpublic class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }}WebSocket配置//配置消息代理,默认情况下使用内置的消息代理public interface WebSocketMessageBr

2022-03-25 17:48:02 3136

原创 1.Websocket的认识

WebSocket机制  WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是:  WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。  通常它表示为:ws://echo.websocket

2022-03-25 17:44:25 2516

原创 23.RabbitMQ 常用命令

服务启动停止:  启动: rabbitmq-server -detached  停止: rabbitmqctl stop插件管理:  插件列表: rabbitmq-plugins list  启动插件: rabbitmq-plugins enable XXX (XXX为插件名)  停用插件: rabbitmq-plugins disable XXX  启动web管理插件:rabbitmq-plugins enable rabbitmq_management用户管理:  添加用户: ra

2021-08-25 22:19:40 98

原创 22.RabbitMQ 高可用镜像集群

高可用搭建准备:  1、再准备两台虚拟机vi /etc/hostname #修改虚拟机名称 node4 node5  2、设置node4 、node5的hostsvi /etc/hosts #修改虚拟机hosts node1 node2 node3  文件内容:192.168.0.101 node1192.168.0.102 node2192.168.0.103 node3虚拟机(机器)名称node4node5ip192.168.0.1041

2021-08-25 22:10:58 161

原创 21.RabbitMQ 镜像集群

集群架构:  当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每个节点共享所有的用户,虚拟主机,队列,交换器,绑定关系,运行时参数和其他分布式状态等信息。一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图:  这里对上面的集群架构做一下解释说明:  首先一个基本的 RabbitMQ 集群不是高可用的,虽然集群共享队列,但在默认情

2021-08-21 21:42:44 3928 2

原创 20.RabbitMQ 用户&权限&Virtual Hosts

1、Virtual Hosts(虚拟主机):  类似于逻辑物理的区域划分,类似于C盘D盘E盘的概念;  默认存储在根目录:  1、新建虚拟主机:2、查看交换机,给虚拟主机分配了默认的交换机2、Limits(限制):  设置虚拟主机的Connections、Queues最大连接数3、Users(权限管理):  1、超级管理员(administrator)  可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。  2、监控者(monitoring) .

2021-08-03 15:07:07 318 1

原创 19.RabbitMQ 延迟消息实现

什么是延迟队列:  延时队列,首先,它是一种队列,队列意味着内部的元素是有序的,元素出队和入队是有方向性的,元素从一端进入,从另一端取出。  其次,延时队列,最重要的特性就体现在它的延时属性上,跟普通的队列不一样的是,普通队列中的元素总是等着希望被早点取出处理,而延时队列中的元素则是希望被在指定时间得到取出和处理,所以延时队列中的元素是都是带时间属性的,通常来说是需要被处理的消息或者任务。  简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。延迟队列使用场景:  那么什么时候需要用延

2021-08-03 14:55:31 224

原创 18.RabbitMQ DLX死信队列

队列中的消息可能会变成死信消息(dead-lettered),进而当以下几个事件任意一个发生时,消息将会被重新发送到一个交换机:  1,消息被消费者使用basic.reject或basic.nack方法并且requeue参数值设置为false的方式进行消息确认(negatively acknowledged)  2,消息由于消息有效期(per-message TTL)过期  3,消息由于队列超过其长度限制而被丢弃  注意,队列的有效期并不会导致其中的消息过期x-dead-letter-exch.

2021-08-03 14:42:33 214

原创 1.Cloud Alibaba入门简介

1、Spring Cloud Alibaba 是什么  Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。  先说说 Spring Cloud:  提起微服务,不得不提 Spring Cloud 全家桶系列,SpringCloud 是若干个框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监

2021-07-27 10:14:00 1625

原创 11.React 类式组件

创建类式组件:  代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>类式组件</title></head><body> <!-- 准备好一个“容器” --> <div id="test"></div> <!-- 引入react核心库

2021-07-27 10:04:35 93

原创 10.React 复习类相关知识

ES6中的知识点,直接上代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>类的基本知识</title></head><body> <script type="text/javascript" > /* 总结: 1.类中的构造器不

2021-07-23 17:26:28 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除