Rust使用Actix-Web验证Auth Web微服务 - 完整教程第1部分
文章出自Rust中文社区
我们将创建一个rust仅处理用户注册和身份验证的Web服务器。我将在逐步解释每个文件中的步骤。完整的项目代码在这里。
事件的流程如下所示:
- 使用电子邮件地址注册➡接收带有链接的?进行验证
- 点击链接➡使相同的电子邮件和密码注册
- 使用电子邮件和密码登录➡获取验证并接收jwt令牌
我们打算使用的包
- actix // Actix是一个Rust actor框架。
- actix-web // Actix web是Rust的一个简单,实用且极其快速的Web框架。
- brcypt //使用bcrypt轻松散列和验证密码。
- chrono // Rust的日期和时间库。
- diesel //用于PostgreSQL,SQLite和MySQL的安全,可扩展的ORM和查询生成器。
- dotenv // Rust的dotenv实现。
- env_logger //通过环境变量配置的日志记录实现。
- failure //实验性错误处理抽象。
- jsonwebtoken //以强类型方式创建和解析JWT。
- futures //future和Stream的实现,具有零分配,可组合性和类似迭代器的接口。
- r2d2 //通用连接池。
- serde //通用序列化/反序列化框架。
- serde_json // JSON序列化文件格式。
- serde_derive //#[derive(Serialize,Deserialize)]的宏1.1实现。
- sparkpost //用于sparkpost电子邮件api v1的Rust绑定。
- uuid //用于生成和解析UUID的库。
我从他们的官方说明中提供了有关正在使用的包的简要信息。如果您想了解更多有关这些板条箱的信息,请转到crates.io。
准备
我将在这里假设您对编程有一些了解,最好还有一些Rust。需要进行工作设置rust。查看https://rustup.rs
用于rust设置。
我们将使用diesel
来创建模型并处理数据库,查询和迁移。请前往http://diesel.rs/guides/getting-started/
开始使用并进行设置diesel_cli
。在本教程中我们将使用postgresql,请按照说明设置postgres。您需要有一个正在运行的postgres服务器,并且可以创建一个数据库来完成本教程。另一个很好的工具是Cargo Watch
,它允许您在进行任何更改时观看文件系统并重新编译并重新运行应用程序。
如果您的系统上已经没有安装Curl
,请在本地测试api。
让我们开始
检查你的rust和cargo版本并创建一个新的项目
# at the time of writing this tutorial my setup is
rustc --version && cargo --version
# rustc 1.29.1 (b801ae664 2018-09-20)
# cargo 1.29.0 (524a578d7 2018-08-05)
cargo new simple-auth-server
# Created binary (application) `simple-auth-server` project
cd simple-auth-server # and then
# watch for changes re-compile and run
cargo watch -x run
用以下内容填写cargo依赖关系,我将在项目中使用它们。我正在使用crate的显式版本,因为你知道包变旧了并且发生了变化。(如果你在很长一段时间之后阅读本教程)。在本教程的第1部分中,我们不会使用所有这些,但它们在最终的应用程序中都会变得很方便。
[dependencies]
actix = "0.7.4"
actix-web = "0.7.8"
bcrypt = "0.2.0"
chrono = { version = "0.4.6", features = ["serde"] }
diesel = { version = "1.3.3", features = ["postgres", "uuid", "r2d2", "chrono"] }
dotenv = "0.13.0"