[GO] GO语言gin框架实现管理员认证登陆接口
2023-02-18 15:41:28 时间
后台用户登录验证功能是很多项目的必须要有的逻辑 , 也是常见的技术需求 .
要实现这个逻辑首先要有数据库表结构如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `password` varchar(50) NOT NULL DEFAULT '', `nickname` varchar(50) NOT NULL DEFAULT '', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `deleted_at` timestamp NULL DEFAULT NULL, `avator` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
gin框架路由入口去获取post的数据
func LoginCheckPass(c *gin.Context) { password := c.PostForm("password") username := c.PostForm("username") info, uRole, ok := CheckKefuPass(username, password) userinfo := make(map[string]interface{}) if !ok { c.JSON(200, gin.H{ "code": 400, "msg": "验证失败", }) return } userinfo["name"] = info.Name userinfo["kefu_id"] = info.ID userinfo["type"] = "kefu" if uRole.RoleId != 0 { userinfo["role_id"] = uRole.RoleId } else { userinfo["role_id"] = 2 } userinfo["create_time"] = time.Now().Unix() token, _ := tools.MakeToken(userinfo) userinfo["ref_token"] = true refToken, _ := tools.MakeToken(userinfo) c.JSON(200, gin.H{ "code": 200, "msg": "验证成功,正在跳转", "result": gin.H{ "token": token, "ref_token": refToken, "create_time": userinfo["create_time"], }, }) }
先忽略掉生成token部分 ,只看查询数据库用户名密码部分
func CheckKefuPass(username string, password string) (models.User, models.User_role, bool) { info := models.FindUser(username) var uRole models.User_role if info.Name == "" || info.Password != tools.Md5(password) { return info, uRole, false } uRole = models.FindRoleByUserId(info.ID) return info, uRole, true }
model里面
func FindUser(username string) User { var user User DB.Where("name = ?", username).First(&user) return user }
相关文章
- 安装git
- centos6.5 git clone http 报错
- linux目录
- linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法
- git操作
- github基本操作
- 基于SSH协议clone GitHub远端仓库到本地-git
- Linux原理与实践
- C++ 如果设置日期 & 时间基础篇
- GitHub 的替代品
- Oh My GitHub 1.0 is out!
- 【已解决】Windows系统使用WSL安装的Linux系统怎么设置root密码
- php大小写转换
- php如何在某个时间上加一天?一小时? 时间加减
- php字符串比较
- PHP中include()与require()
- php实现网站访客数量统计的方法(简单实现,不能防刷新)
- PHP循环输出二维数组的数据
- PHP统计当前在线用户数实例
- PHP 的 UNICODE 编码和解码