经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
[GO] GO语言gin框架实现管理员认证登陆接口
来源:cnblogs  作者:陶士涵  时间:2020/11/9 16:09:44  对本文有异议

后台用户登录验证功能是很多项目的必须要有的逻辑 , 也是常见的技术需求 .

要实现这个逻辑首先要有数据库表结构如下:

  1. CREATE TABLE `user` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(50) NOT NULL DEFAULT '',
  4. `password` varchar(50) NOT NULL DEFAULT '',
  5. `nickname` varchar(50) NOT NULL DEFAULT '',
  6. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  8. `deleted_at` timestamp NULL DEFAULT NULL,
  9. `avator` varchar(100) NOT NULL DEFAULT '',
  10. PRIMARY KEY (`id`),
  11. KEY `idx_name` (`name`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

gin框架路由入口去获取post的数据

  1. func LoginCheckPass(c *gin.Context) {
  2. password := c.PostForm("password")
  3. username := c.PostForm("username")
  4. info, uRole, ok := CheckKefuPass(username, password)
  5. userinfo := make(map[string]interface{})
  6. if !ok {
  7. c.JSON(200, gin.H{
  8. "code": 400,
  9. "msg": "验证失败",
  10. })
  11. return
  12. }
  13. userinfo["name"] = info.Name
  14. userinfo["kefu_id"] = info.ID
  15. userinfo["type"] = "kefu"
  16. if uRole.RoleId != 0 {
  17. userinfo["role_id"] = uRole.RoleId
  18. } else {
  19. userinfo["role_id"] = 2
  20. }
  21. userinfo["create_time"] = time.Now().Unix()
  22. token, _ := tools.MakeToken(userinfo)
  23. userinfo["ref_token"] = true
  24. refToken, _ := tools.MakeToken(userinfo)
  25. c.JSON(200, gin.H{
  26. "code": 200,
  27. "msg": "验证成功,正在跳转",
  28. "result": gin.H{
  29. "token": token,
  30. "ref_token": refToken,
  31. "create_time": userinfo["create_time"],
  32. },
  33. })
  34. }

先忽略掉生成token部分 ,只看查询数据库用户名密码部分

  1. func CheckKefuPass(username string, password string) (models.User, models.User_role, bool) {
  2. info := models.FindUser(username)
  3. var uRole models.User_role
  4. if info.Name == "" || info.Password != tools.Md5(password) {
  5. return info, uRole, false
  6. }
  7. uRole = models.FindRoleByUserId(info.ID)
  8. return info, uRole, true
  9. }

 

model里面

  1. func FindUser(username string) User {
  2. var user User
  3. DB.Where("name = ?", username).First(&user)
  4. return user
  5. }

 

原文链接:http://www.cnblogs.com/taoshihan/p/13880237.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号