JWT(json web token)
简介JWT,全称是 Json Web Token, 是 JSON 风格轻量级的授权和身份认证规范,可实现无状态、分布式的 Web 应用授权;官网:https://jwt.iohttps://jwt.ioGitHub 上 jwt 的 java 客户端:https://github.com/jwtk/jjwthttps://github.com/jwtk/jjwt我们最终可以利用 jwt 实现无状态登录
数据格式JWT 包含三部分数据:
Header:头部,通常头部有两部分信息:
token 类型:JWT
加密方式:base64(HS256)
Payload:载荷,就是有效数据,一般包含下面信息:
用户身份信息(注意,这里因为采用 base64 编码,可解码,因此不要存放敏感信息)
注册声明:如 token 的签发时间,过期时间,签发人等,这部分也会采用 base64 编码,得到第二部分数据。
Signature:签名
是整个数据的认证信息。根据前两步的数据,再加上指定的密钥(secret)(不要泄漏,最好周期性更换),通过 base64 编码生成。用于验证整个数据完整和可 ...
ThreadLocal
作者声明1如有问题,欢迎指正!
单点登录(一处登录,处处可用)
实用框架gitee xxl https://gitee.com/xuxueli0323/xxl-sso.githttps://gitee.com/xuxueli0323/xxl-sso.git
流程
作者声明1如有问题,欢迎指正!
OAuth2.0
是什么对于用户相关的开放Api(例如获取用户信息、动态同步、照片、日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显示的向用户征求授权。
流程可进入各大开放平台接入即可使用
作者声明1如有问题,欢迎指正!
Md5&Md5盐值加密
介绍与特点Md5
Message Digest algorithm 5,信息摘要算法
压缩性:任意长度的数据,算出的Md5值的长度都是固定的;
容易计算:从原数据计算出Md5值很容易;
抗修改性:对源数据进行任何改动,哪怕只修改一个字节,所得到的MD5值很容易。
强抗碰撞:想找到两个不同的数据,使他们具有相同的Md5值,是非常困难的。
加盐
通过生成随机数与Md5生成字符串进行组合
数据库同时存储Md5值玉salt值,验证正确性使用salt进行Md5即可。
使用 推荐 BCryptPasswordEncoder
12345678910111213141516171819@Test public void md5Test() { //org.apache.commons.codec.digest // 由于抗修改性 所以可以暴力 破解 彩虹表 所以MD5不能进行直接加密 DigestUtils.md5Hex("123456"); // 盐值加密:随机值 格式 $1$+8位字符 / ...
全局异常处理
编写异常Advice12345678910111213141516171819202122232425262728293031323334353637383940414243444546package com.jhj.gulimall.product.exception;import com.jhj.common.exception.BizCodeEnume;import com.jhj.common.utils.R;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControlle ...
spring-cloud-alibaba nacos openfegin
引入依赖1234567891011<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.7.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>
Nacos注册中心下载nacos注册中心https://github.com/ ...
axios请求
可传参数123456789101112131415161718192021222324252627282930313233axios({ //请求方式 get post delete put method:"", //请求地址 url:"", //query 参数 params:{ }, // body参数 data:{ }, //请求头 一般是用来指定请求传参格式 //请求中没有 data参数 所以headers content-type 默认为 content-type: "application/json;charset=UTF-8" // headers: { // // 'content-type' ...
idea mybatisplus 插件使用
在plugin中安装mybatisplus 插件
使用
配置数据库
生成代码
表新增字段,重新生成实体类覆盖因业务需求,表中可能会时不时增加一些字段,大多情况下实体类中不会添加表中没有的字段,因此可以直接重新生成实体类并进行覆盖即可。
作者声明1如有问题,欢迎指正!
springboot minio
pom12345<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version></dependency>
配置1234567891011121314151617181920@Data@Configuration@ConfigurationProperties(prefix = "minio")public class MinioClientConfig { private String endpoint; private String accessKey; private String secretKey; @Bean public MinioClient minioClient() { MinioClient minioClient = Minio ...