1个不稳定版本
0.1.0 | 2020年9月18日 |
---|
#11 in #user-email
195KB
2.5K SLoC
login_app_2
登录/认证模块是之前login_app的重建。
在本版本中,
- 使用Warp框架简化路由(前一个版本中的Hyper)
- 使用了https
- 添加了多语言支持
保留的,
- 使用SQLite数据库存储应用程序数据
- 使用Cookie进行会话管理
- 使用MSMTP发送邮件
- 可定制的值;尽可能多的参数被放入Settings.toml文件,而不是在程序内部硬编码。
目标
以下目标在心中开发
- 不断学习(尤其是Rust语言)
- 可重用代码
- 覆盖登录相关功能、表单或电子邮件,例如
a. 注册表单
b. 向注册的电子邮件发送一个令牌;在时间限制后使其过期
c. 接收令牌作为输入的确认屏幕
d. 登录表单
e. 忘记密码表单
f. 向注册的电子邮件发送一个令牌,在时间限制后使其过期
g. 接收令牌和新密码作为输入的重置密码表单
h. 首页(索引页或第一页),显示登录、登出或取消链接
先决条件
- Rust安装
- MSMTP客户端安装(请参阅文件msmtp.md以获取详细信息)
如何使用
- 克隆或下载此应用程序
- 编辑Settings.toml文件以更新数据库文件夹、日志文件夹、电子邮件服务器详情、IP地址等。
- 使用以下命令构建可执行文件:$Cargo build --release
- 将以下文件/文件夹复制到一个单独的文件夹中,例如"~/projects":
a. target/release/login-app文件
b. resources文件夹
c. 一个toml文件:Settings.toml - 编辑login_app_2.service以更新文件夹名称,并按照其中的说明在Linux中将此应用程序作为服务运行。
- 假设在 Settings.toml 文件中为 ip-address 和 port 设置为 127.0.0.1 和 5050,打开网页浏览器并输入网址为 https://127.0.0.1:5050(忽略浏览器可能报告的无效证书,因为这仅用于开发/测试;在生产环境中,可以使用来自 letsencrypt.org 等来源的真实证书)
- 浏览器随后显示一个包含 登录 | 注册 链接和 语言 选择选项的 主页。
- 点击 注册 链接进入注册页面。
- 注册页面显示电子邮件、密码和重复密码等字段。填写并提交。将打开一个确认页面。
- 将发送到电子邮件中的令牌复制到这个确认页面,或者在开发环境中,转到 DB Browser for SQLite(假设它已经安装在linux机器上)... 打开数据库文件,它很可能命名为 login_app.db 在 /login_app/database 文件夹下,打开 app_user 表,在其中定位一个条目,复制其 token 字段下的数据,粘贴 这些数据到确认页面。
- 输入令牌有时间限制,例如 30秒,这可以在 Settings.toml 文件中自定义。
- 时间限制到期后,注册数据将从数据库中 删除。有两个不同的时间限制检查点
- 一个在 客户端,在javascript中,另一个在 服务器端,在rust中。
- 如果浏览器打开且在时间限制内没有用户输入,则使用客户端时间限制。
- 如果浏览器关闭,则使用服务器端时间限制。
- 提交有效的令牌后,注册即被确认。
- 转到登录页面并尝试使用凭证登录。
- 登录成功后,将显示 index / 主页 / 第一 页面,包含用户的电子邮件地址、注销和取消链接。
- 如果发生错误,将保持在登录屏幕,显示错误为 无效凭证!。
- 如果忘记密码,转到登录页面,点击 忘记密码?。
- 在忘记密码表单中输入电子邮件地址。
- 提交此请求后,将发送包含令牌的电子邮件。将其复制到下一个屏幕,即重置密码页面。
- 在 重置密码 页面上,输入 令牌、新密码 和 重复新密码 并提交。出现一个状态页面,显示成功或错误。成功后,尝试使用新密码登录。
- 为了支持多种语言,使用逗号分隔值(CSV)文件。
- csv文件中的第一个字段保留用于键文本,第二个字段及其之后,输入语言文本。
- 使用三个csv文件
a. dictionaries.csv 文件用于支持HTML页面中的文本
b. messages.csv 文件用于显示应用程序特定的消息,并且
c. errors.csv 文件用于显示应用程序错误
演示
以下链接可以找到演示应用程序
LoginApp2 演示
许可证
MIT
依赖关系
~78MB
~1.5M SLoC