Web开发

首页 » 常识 » 常识 » GoWeb开发用户激活
TUhjnbcbe - 2022/5/31 19:23:00
刘*连在哪家医院坐诊 http://m.39.net/news/a_9307351.html
上一篇文章我们实现了向用户发送激活token,在这一节中,我们将继续进入实际激活用户的部分。但是在编写代码之前,我想快速讨论一下系统中用户和token之间的关系。我们所了解的在关系数据库术语中称为一对多关系——其中一个用户可能有许多token,但一个token只能属于一个用户。当您有这样的一对多关系时,您可能希望从两个不同的方面对关系执行查询。例如,在我们的例子中,可能想要:根据token查询用户根据用户查询所有tokens要在代码中实现这些查询,一个清晰的方法是更新你的数据库模型,包括一些额外的方法,像这样:

UserModel.GetForToken(token)→根据token查询用户信息TokenModel.GetAllForUser(user)→根据用户查询所有tokens这种方法的优点是,返回的实体与模型的主要职责相一致;UserModel方法返回一个用户,而TokenModel方法返回tokens。创建用户激活处理程序(activateUserHandler)上面我们从业务逻辑上介绍了查询用户和token的关系模型,下面开始编写用户激活代码。为了实现该功能需要添加PUT/v1/users/activated接口到我们的API服务中。激活流程如下:1、用户提交激活token明文(从欢迎邮件中获取)到PUT/v1/users/activated接口。2、服务端校验token明文格式是否正确,如果格式不对返回客户端相应错误。3、然后调用UserModel.GetForToken()方法,根据token查询到对应的用户信息。如果没有匹配的用户,或者token已经过期,向客户端返回错误信息。4、设置用户表中activated=true,更新用户表信息。5、从token表中删除所有对应用户的激活token。可以调用TokenModel.DeleteAllForUser()方法来完成。6、向客户端发送激活后的用户详细信息。下面从cmd/api/users.go文件开始,并创建新的activateUserHandler:File:cmd/api/users.go

packagemain...func(app*application)activateUserHandler(w

1
查看完整版本: GoWeb开发用户激活