GO语言gin框架实现管理员认证登陆接口
后台用户登录验证功能是很多项目的必须要有的逻辑,也是常见的技术需求.
要实现这个逻辑首先要有数据库表结构如下:
CREATETABLE`user`( `id`int(11)NOTNULLAUTO_INCREMENT, `name`varchar(50)NOTNULLDEFAULT'', `password`varchar(50)NOTNULLDEFAULT'', `nickname`varchar(50)NOTNULLDEFAULT'', `created_at`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP, `updated_at`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP, `deleted_at`timestampNULLDEFAULTNULL, `avator`varchar(100)NOTNULLDEFAULT'', PRIMARYKEY(`id`), KEY`idx_name`(`name`) )ENGINE=InnoDBDEFAULTCHARSET=utf8
gin框架路由入口去获取post的数据
funcLoginCheckPass(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"
ifuRole.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部分,只看查询数据库用户名密码部分
funcCheckKefuPass(usernamestring,passwordstring)(models.User,models.User_role,bool){
info:=models.FindUser(username)
varuRolemodels.User_role
ifinfo.Name==""||info.Password!=tools.Md5(password){
returninfo,uRole,false
}
uRole=models.FindRoleByUserId(info.ID)
returninfo,uRole,true
}
model里面
funcFindUser(usernamestring)User{
varuserUser
DB.Where("name=?",username).First(&user)
returnuser
}
到此这篇关于GO语言gin框架实现管理员认证登陆接口的文章就介绍到这了,更多相关GO语言实现管理员认证登陆接口内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!