在上一篇文章中已经介绍了gorm对sql数据库的基本操作,本篇文章将在此基础上介绍一下大项目用户注册与登录功能的实现。如果有对之前内容不熟悉的可以回顾这篇文章gorm操作SQL实现增删改查 | 青训营
创建表
由于上篇文章介绍的较为详细,这里对这一部分简单带过。首先用根据User结构体通过gorm的AutoMigrate来自动生成一个表
注册
根据接口文档可知,注册接口有两个query参数username、password。我们可以通过query语句来得到这两个参数,如下
username := c.Query("username")
password := c.Query("password")
然后就可以把用户信息用结构体存储起来,再传入SQL保存
newUser := model.User{Username: username, Password: password}
db.DB.Create(&newUser)
这样就实现了简单的注册功能,根据要求,用户名不能重复,那么再来完善一下。 通过查询语句来查找数据库中是否存在username。
res := db.DB.Where("username = ?", username).First(&user)
如果已经存在的话,就可以查询成功,res.Error很明显不等于nil,这样就可以很简单的用判断语句来实现用户名不重复了。
登录
在实现了注册功能后,其实登录功能也十分的类似。
首先,登录接口也有两个query参数username、password。那么和之前一样,使用query来获取这两个参数
username := c.Query("username")
password := c.Query("password")
那么之后得到这两个参数后,我们需要判断表里是否有这个用户。
res := db.DB.Where("username = ?", username).Where("password=?", password).First(&user)
如果存在这个用户的话显示登录成功,否则登录失败。如此就实现了简单的注册与登录功能。
这篇文章讲解了最为基础的注册与登录接口,主要以思路为主,省略了返回的响应。简单总结一下,注册就是将用户信息存储到数据库中,需要查询下username是否重复。而登录就是在数据库查询是否已经存储了这个用户。
这个简单的案例还有很多可以提升的地方,比如使用中间件进行鉴权,登录时设置token。也可以用Redis来提高性能。
`