监管端..
文章目录
- 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): 资源获得即初始化 利用对象生命周期来控制程序的资源(将资源交给对象处理) 智能指针利用了该思想 将资源交给一个对象, 初始化资源(可以是指针或者等等资源), 释放交给析构函数 因为析构函数无论是什么场景, 对象销毁时一定会…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...