目录结构以下图示意
1.定义一个注册路由函数
package routers
import (
"github.com/gin-gonic/gin"
"go_kuan/routers/RoterAuth"
)
//编辑是总路由文件routers-->routers.go
// 注册路由方法
func RegisterRouters(r *gin.Engine) {
apiGroup := r.Group("/api")
RoterAuth.RegisterSubRouter(apiGroup)
}
2.创建用户认证的路由以及文件
package RoterAuth
import (
"github.com/gin-gonic/gin"
"go_kuan/controllers/ContrAuth"
)
//定义一个登录接口方法
func login(authGroup *gin.RouterGroup){
// 注意:这里调用方法不要加() 这里不是运行调用的函数
authGroup.POST("/login", ContrAuth.Login)
}
//定义一个退出接口方法
func login(authGroup *gin.RouterGroup){
// 注意:这里调用方法不要加() 这里不是运行调用的函数
authGroup.POST("/log", ContrAuth.Logout)
}
// 配置登录功能的路由策略方法
func RegisterSubRouter(g *gin.RouterGroup) {
authGroup := g.Group("/auth")
login(authGroup)
logout(authGroup)
}
3.创建登录路由处理函数(控制器)
package ContrAuth
import (
"github.com/gin-gonic/gin"
"go_kuan/utils/utilsLogs"
)
// 定义一个结构体用于接收参数绑定到
type UserInfo struct{
Username string `json:"username"`
Password string `json:"password"`
}
// 处理登录的逻辑
func Login(r *gin.Context){
// 获取前端传递用户和密码
userinfo := UserInfo{}
if err := r.ShouldBindJSON(&userinfo); err !=nil{
r.JSON(200, gin.H{
"msg": err.Error(),
"status": 401,
})
return
}
utilsLogs.Info(map[string]interface{}{"username":userinfo.Username,
"password":userinfo.Password,
"登录成功"})
}