短短几十行,同时实现: 数据库自动迁移/自动建表 启动一个HTTP接口服务 从URL地址接收分页参数 完整查询 分页查询 表数据量查询 并且极易拓展新的表进行复用,后期拓展新的表查询仅仅需要加个结构体和仓库定义即可。 直接上示例 package main import ( "net/http" "strconv" "github.com/gin-g…
.gitignore(Git排除列表) Golang tmp/ dist/ version/ script/ *.pem *.yml *.zip *.exe *.log Python .idea/ .venv/ .vscode/ script/ __pycache__/ version/ *.json *.zip *.bat Golang/Air热…
一个客户端AES自己加密自己解密示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>crypto-js-AES加密</title> <!-- 加密 --> <script src="https://cdn.bootcss.com…
从前端,到后端,除了Gin框架本身,完全不依赖第三方库,极简实现,无比丝滑。 流程梳理 客户端生成一个AES密钥(建议存Cookie里) 服务端生成一对RSA密钥(private.pem+public.pem) 服务端开启一个接口,接收任意请求方法都行,将RSA公钥以Set-Cookie标头直接塞到客户端浏览器Cookie里面(记得以base64传…
在实现“30天内免登录”功能时,应该设置的是刷新令牌(Refresh Token)的有效期较长,而不是登录令牌(通常是指访问令牌 Access Token)的有效期。 刷新令牌(Refresh Token) 刷新令牌通常具有较长的有效期,用于在访问令牌过期后获取新的访问令牌,而无需用户重新输入凭据。 关于“30天内免登录”的这个功能呢,意味着刷新令…
项目开发中只需定义一个常量映射表,后期需要更改键名直接通过映射表统一修改,从而无需每个文件去一一修改,降低代码出错率的同时确保可维护性。 Go示例 // Resdis键名映射表 package cache const ( UserNameKey = "user:" UserOnlineKey = "user:online:" EmailCaptch…
省去写一堆重复代码,可以一直添加自定义消息。 进阶版 支持复杂操作 package util import "github.com/gin-gonic/gin" // 响应码与消息映射关系 var customRespone = map[int]string{ 200: "操作成功", 400: "你那边出错了", 401: "没有权限",…
使用Viper+fsnotify实现 package bootstrap import ( "fmt" "log" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" ) // 配置信息结构 type Config struct { Server struct { Version stri…
简单记个笔记 这里的ID是unit类型,而RoleLevel是int类型,使用strconv包解决 userIDStr := strconv.FormatUint(uint64(userTable.ID), 10) roleLevelStr := strconv.Itoa(userTable.RoleLevel)