中等
技术面试0 次浏览

设计一个简单的用户登录系统,包含用户注册、登录和密码找回功能。请描述系统的数据库设计和主要流程。

后端工程师
System DesignDatabaseWeb

答题要点

对于用户登录系统的数据库设计,主要需要创建两个表:用户表(users)和找回密码表(password_reset)。用户表包含字段:用户 ID(user_id)、用户名(username)、密码(password)、邮箱(email)等。找回密码表包含字段:重置 ID(reset_id)、用户 ID(user_id)、重置令牌(reset_token)、过期时间(expiration_time)。系统的主要流程如下:用户注册时,前端收集用户输入的用户名、密码和邮箱信息,发送到后端。后端验证信息的合法性,若合法则将用户信息插入用户表,并返回注册成功信息。用户登录时,前端收集用户名和密码,发送到后端。后端在用户表中查找匹配的记录,若找到且密码正确,则生成并返回一个唯一的令牌(如 JWT),用于后续的身份验证。密码找回功能,用户输入邮箱,后端验证邮箱是否存在于用户表中。若存在,则生成一个重置令牌,将其插入找回密码表,并发送包含重置链接的邮件给用户。用户点击链接后,后端验证重置令牌的有效性和是否过期,若有效则允许用户设置新密码,并更新用户表中的密码字段。