监管端..
文章目录
- 1. 登录流程
- 2. 日志AOP
1. 登录流程
使用账号(手机号)、密码、验证码。登录就是获取token的,输入的账号密码用RSA加密(非对称)
- 首先输入账号密码,在发送手机验证码时候先校验账号密码有没有输入,输入的话美团拉动,成功后发送验证码(本地生成6位随机数,之后调用发送短信服务,为了避免频繁多次点击获取验证码,本地synchronized LRUmap类对象,当map中没有key(手机号)时存入,并设置value为当前时间戳,当map中有key(手机号)说明用户已经发送过验证码,这时候拿到map中时间戳和现在时间戳相减,小于2秒提示不能频繁发送),并且最后将这个验证码存入redis,过期时间五分钟。
- 后面当用户拿到短信验证码,输入,之后进入登录,采用的是password模式,到DB中查账号信息,密码信息,redis中校验验证码,最后将查到的有用的信息:账号、密码、名字、租户code等信息封装为accessToken,存入redis,最后推送登录日志:发布登录事件。
2. 日志AOP
- 定义注解 @Log
- 切面处理:LogAspect
- 定义切点:@Pointcut,定位@Log注解的方法
- @Before(“pointcut()”):创建日志对象,设置部分值:可以根据@Log注解定义的描述信息啊、@Log注解修饰的方法找到@operation啊等这些swagger注解的描述信息,通过@Log注解找到父类@tag描述的信息,根据请求获取浏览器啊、操作系统啊、等信息
- @AfterReturning:根据方法执行后的结果,是正常返回还是异常?等返回信息补全日志对象,设置方法执行后的状态结果信息,最后发布日志事件(继承ApplicationEvent)。
- 定义监听事件的bean:@EventListener({LogEvent.class})监听日志事件,@Async异步执行,bean中注入日志操作的feign,远程调用,执行日志的DB落库。
发布日志事件:

监听日志事件:异步落库

相关文章:
监管端..
文章目录 1. 登录流程2. 日志AOP 1. 登录流程 使用账号(手机号)、密码、验证码。登录就是获取token的,输入的账号密码用RSA加密(非对称) 首先输入账号密码,在发送手机验证码时候先校验账号密码有没有输入…...
点击登录按钮先检测输入框的规则检测(vue组合式)
<template><el-form :model"user" :rules"rules" ref"loginForm" label-width"auto" style"max-width: 600px"><el-form-item label"用户名" prop"name"><el-input v-model"…...
网络工程师---第四十二天
1、基于子网的vlan划分配置步骤是什么? 2、基于端口的vlan划分配置步骤是什么? 3、基于MAC地址的vlan划分配置步骤是什么? 4、请简述无线局域网的组网方式有哪几种,区别是什么? 5、请简述堆叠、级联和集群作用和区别是…...
leetcode 1241每个帖子的评论数(postgresql)
需求 编写 SQL 语句以查找每个帖子的评论数。 结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 并且按 post_id 升序排列。 Submissions 可能包含重复的评论。您应该计算每个帖子的唯一评论数。 Submissions 可能包含重复的帖子。您应该将它们视为一个帖子。…...
前端最新面试题(ES6模块篇)
目录 1 ES5、ES6和ES2015有什么区别? 2 babel是什么,有什么作用? 3 let有什么用,有了var为什么还要用let? 4 举一些ES6对String字符串类型做的常用升级优化? 5 举一些ES6对Array数组类型做的常用升级优化 6 举一些ES6对Number数字类型做的常用升级优化 7 举一些ES…...
STM32H750外设之ADC通道选择
目录 概述 1 通道选择功能介绍 2 通道选择( SQRx、 JSQRx) 2.1 通道复用 2.1.1 通道介绍 2.1.2 通道框图 2.2 转换分组 2.3 内部专用通道 3 通道预选寄存器 (ADCx_PCSEL) 3.1 功能介绍 3.2 预选通道寄存器 概述 本位主要介绍STM32H750外设之…...
【Unity2D 2022:Cinemachine】相机跟随与地图边界
一、导入Cinemachine工具包 1. 点击Window-Package Manager,进入包管理界面 2. 点击All,找到Cinemachine工具包,点击Install 二、相机跟随角色 1. 选中Main Camera,点击Component-Cinemachine-CinemachineBrain,新建…...
ssh远程连接的相关配置
连接同一个局域网下: 正好这里来理解一下计算机网络配置中的ip地址配置细节, inet 172.20.10.13: 这是主机的IP地址,用于在网络中唯一标识一台设备。在这个例子中,IP地址是172.20.10.13。 netmask 255.255.255.240: 这是子网掩码…...
在leafet上画圆、多边形、线、矩形
在leaflet上画圆、多边形、线、矩形 <template><div id"map" class"map"></div> </template><script> import L from leaflet; export default {data () {return {myGroup: ,};},mounted () {this.initMaps()this.huizhiro…...
SpringBoot中如何在服务器进行校验?
数据校验就是数据的合法性检查,在服务器端也可以对数据进行校验,一般使用JSR303 校验 JSR303是Java为Bean数据合法性校验提供的标准框架,是一种声明式校验 JSR303通过在Bean属性上标注类似于NotNull、Max等注解来指定校验规则,并…...
element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入
解决方案: 我是form表单嵌套表格,里面的el-input输入框,输入第一个值的时候会突然失去焦点,需要再次点击输入框才能正常输入,原因是table的key值,需要改成正常的index即可,如果你是循环的&…...
【绝地求生game】
编写一个完整的《绝地求生》这样的游戏程序代码是一个庞大的工程,涉及到成千上万行的代码和复杂的多模块协作。在这里,我可以提供一个非常简化的示例,用于演示游戏编程中可能用到的基本概念,比如玩家移动、基本物理和简单的游戏逻…...
Mac上Steam安装的游戏已经卸载,但游戏的快捷方式图标仍存在的解决方式
打开终端,输入以下内容,回车。 open ~/Applications 在弹出的窗口中,会列出对应的快捷方式,按需删除即可。 实际上打开的是 /Users/改为你的用户名/Applications 文件夹下的内容。因此也可以通过打开访达(Finder&am…...
PTA 判断两个矩阵相等
Peter得到两个n行m列矩阵,她想知道两个矩阵是否相等,请你用“Yes”,“No”回答她(两个矩阵相等指的是两个矩阵对应元素都相等)。 输入格式: 第一行输入整数n和m,表示两个矩阵的行与列,用空格隔…...
《征服数据结构》双向链表
摘要: 1,双链表的介绍 2,双链表的用途 3,双链表的节点插入和删除 1,双链表的介绍 前面我们讲过单链表,单链表的特点就是只能往后访问不能往前访问。单链表一般在面试中用的比较多,比如删除倒数第…...
我用 Midjourney 的这种风格治愈了强迫症
在 Midjourney 能够实现的各种布局之中,有两种风格因其简洁、有序而独居魅力,它们就是平铺 (Flat Lay) 和 Knolling (Knolling 就是 Knolling, 无法翻译🤣)。要在现实生活中实现这样的美学效果并不容易,你需要精心挑选各种小物件&…...
三维大场景管理-3Dtiles规范
简介 : 这篇文章都是三年前写的了,一直在笔记库存中,今天把他放出来。主要是讲Cesium 的3Dtiles 格式,当然3Dtiles主要是解决场景管理大场景的LOD实现的问题,不管是剔除渲染性能优化之Culling 剔除或者 LOD 、3Dtiles…...
Flutter 中的 FractionalTranslation 小部件:全面指南
Flutter 中的 FractionalTranslation 小部件:全面指南 在 Flutter 的丰富布局库中,FractionalTranslation 是一个允许你将子组件沿着一个轴或两个轴进行部分平移的动画小部件。这种类型的平移通常用于创建滑动效果,如卡片的滑动删除或滑动展…...
Thrift快速入门开发demo
Thrift快速入门开发demo 一、认识Thrift thrift是什么?一个RPC 代码生成框架,使用它的IDL(Interface Defination Language,接口定义语言)定义你想要实现的接口,然后它就会生成对应语言的远程调用框架代码,用户只需要实现接口逻辑,不用关心具体的细节。 tutorial:htt…...
关于C++智能指针复习总结
RAII(Resource Acquisition Is Initialization): 资源获得即初始化 利用对象生命周期来控制程序的资源(将资源交给对象处理) 智能指针利用了该思想 将资源交给一个对象, 初始化资源(可以是指针或者等等资源), 释放交给析构函数 因为析构函数无论是什么场景, 对象销毁时一定会…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...
