gin 实现登录注册代码
时间: 2023-03-25 13:00:38 浏览: 69
gin 是一种基于 Go 语言的 Web 框架,可以用来实现登录注册功能。以下是一个简单的示例代码:
```go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type User struct {
Username string `json:"username"`
Password string `json:"password"`
}
var users []User
func main() {
router := gin.Default()
// 注册接口
router.POST("/register", func(c *gin.Context) {
var user User
if err := c.BindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
for _, u := range users {
if u.Username == user.Username {
c.JSON(http.StatusBadRequest, gin.H{"error": "username already exists"})
return
}
}
users = append(users, user)
c.JSON(http.StatusOK, gin.H{"message": "register success"})
})
// 登录接口
router.POST("/login", func(c *gin.Context) {
var user User
if err := c.BindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
for _, u := range users {
if u.Username == user.Username && u.Password == user.Password {
c.JSON(http.StatusOK, gin.H{"message": "login success"})
return
}
}
c.JSON(http.StatusBadRequest, gin.H{"error": "username or password incorrect"})
})
router.Run(":808")
}
```
在这个示例中,我们定义了一个 `User` 结构体,包含用户名和密码两个字段。我们使用一个全局变量 `users` 来保存所有已注册的用户信息。
在注册接口中,我们首先通过 `BindJSON` 方法将请求体中的 JSON 数据绑定到 `user` 变量上。然后我们遍历已注册的用户列表,如果发现用户名已经存在,就返回错误信息。如果用户名不存在,就将新用户信息添加到 `users` 列表中,并返回注册成功的信息。
在登录接口中,我们也通过 `BindJSON` 方法将请求体中的 JSON 数据绑定到 `user` 变量上。然后我们遍历已注册的用户列表,如果发现用户名和密码都匹配,就返回登录成功的信息。如果用户名或密码不正确,就返回错误信息。
最后,我们使用 `router.Run` 方法启动 Web 服务器,监听 808 端口。