1. 程式人生 > 程式設計 >GO語言gin框架實現管理員認證登陸介面

GO語言gin框架實現管理員認證登陸介面

後臺使用者登入驗證功能是很多專案的必須要有的邏輯,也是常見的技術需求 .

要實現這個邏輯首先要有資料庫表結構如下:

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,false
  }
  uRole = models.FindRoleByUserId(info.ID)

  return info,true
}

model裡面

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

到此這篇關於GO語言gin框架實現管理員認證登陸介面的文章就介紹到這了,更多相關GO語言實現管理員認證登陸介面內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!