后臺(tái)用戶登錄驗(yàn)證功能是很多項(xiàng)目的必須要有的邏輯 , 也是常見的技術(shù)需求 .
要實(shí)現(xiàn)這個(gè)邏輯首先要有數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下:
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的數(shù)據(jù)
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": "驗(yàn)證失敗",
})
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": "驗(yàn)證成功,正在跳轉(zhuǎn)",
"result": gin.H{
"token": token,
"ref_token": refToken,
"create_time": userinfo["create_time"],
},
})
}
先忽略掉生成token部分 ,只看查詢數(shù)據(jù)庫(kù)用戶名密碼部分
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
}
到此這篇關(guān)于GO語(yǔ)言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口的文章就介紹到這了,更多相關(guān)GO語(yǔ)言實(shí)現(xiàn)管理員認(rèn)證登陸接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 一篇文章帶你玩轉(zhuǎn)go語(yǔ)言的接口
- 分析Go語(yǔ)言接口的設(shè)計(jì)原則
- Go語(yǔ)言-為什么返回值為接口類型,卻返回結(jié)構(gòu)體
- go語(yǔ)言實(shí)現(xiàn)接口查詢
- Go語(yǔ)言使用swagger生成接口文檔的方法
- Go語(yǔ)言的接口詳解