GO語(yǔ)言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口
后臺(tái)用戶登錄驗(yàn)證功能是很多項(xiàng)目的必須要有的邏輯 , 也是常見(jiàn)的技術(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VSCode Golang dlv調(diào)試數(shù)據(jù)截?cái)鄦?wèn)題及處理方法
這篇文章主要介紹了VSCode Golang dlv調(diào)試數(shù)據(jù)截?cái)鄦?wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程
Gogland 是 JetBrains 公司推出的Go語(yǔ)言集成開(kāi)發(fā)環(huán)境。這篇文章主要介紹了Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
go語(yǔ)言編程之美自定義二進(jìn)制文件實(shí)用指南
這篇文章主要介紹了go語(yǔ)言編程之美自定義二進(jìn)制文件實(shí)用指南2023-12-12
Go語(yǔ)言中的流程控制結(jié)構(gòu)和函數(shù)詳解
這篇文章主要介紹了Go語(yǔ)言中的流程控制結(jié)構(gòu)和函數(shù)詳解,本文詳細(xì)講解了if、goto、for、switch等控制語(yǔ)句,同時(shí)對(duì)函數(shù)相關(guān)知識(shí)做了講解,需要的朋友可以參考下2014-10-10
Go語(yǔ)言中Slice常見(jiàn)陷阱與避免方法詳解
這篇文章主要為大家詳細(xì)介紹的是 Go 語(yǔ)言中的 Slice 的常見(jiàn)陷阱以及如何避免這些錯(cuò)誤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-02-02
一文教你如何快速學(xué)會(huì)Go的struct數(shù)據(jù)類型
結(jié)構(gòu)是表示字段集合的用戶定義類型。它可以用于將數(shù)據(jù)分組為單個(gè)單元而不是將每個(gè)數(shù)據(jù)作為單獨(dú)的值的地方。本文就來(lái)和大家聊聊Go中struct數(shù)據(jù)類型的使用,需要的可以參考一下2023-03-03
web項(xiàng)目中g(shù)olang性能監(jiān)控解析
這篇文章主要為大家介紹了web項(xiàng)目中g(shù)olang性能監(jiān)控詳細(xì)的解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
go gin中間件關(guān)于 c.next()、c.abort()和return的使用小結(jié)
中間件的執(zhí)行順序是按照注冊(cè)順序執(zhí)行的,中間件可以通過(guò) c.abort() + retrurn 來(lái)中止當(dāng)前中間件,后續(xù)中間件和處理器的處理流程,?這篇文章給大家介紹go gin中間件關(guān)于 c.next()、c.abort()和return的使用小結(jié),感興趣的朋友跟隨小編一起看看吧2024-03-03
Goland項(xiàng)目使用gomod配置的詳細(xì)步驟
Goland是一個(gè)用于Go語(yǔ)言開(kāi)發(fā)的IDE,Goland的項(xiàng)目結(jié)構(gòu)與Go語(yǔ)言的項(xiàng)目結(jié)構(gòu)相似,下面這篇文章主要給大家介紹了關(guān)于Goland項(xiàng)目使用gomod配置的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04

