mirror of https://github.com/vapor/docs.git
update cn doc (#769)
Co-authored-by: Tim Condon <0xTim@users.noreply.github.com>
This commit is contained in:
parent
067ac31294
commit
598a10751e
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
会话非常适合内置在 Vapor 中的前端应用程序,这些应用程序直接向浏览器提供 HTML。对于 API,在请求之间保留用户数据,我们建议使用无状态、[基于令牌的身份验证](../security/authentication.md)方式。
|
||||
|
||||
## 配置
|
||||
## 配置(Configuration)
|
||||
|
||||
要在路由中使用会话,请求必须通过 `SessionsMiddleware` 中间件。 最简单的实现方式是全局添加此中间件。建议你在声明 Cookie 后添加此代码。这是因为 Sessions 是一个结构体,它是一个值类型,而不是引用类型。因为它是值类型,所以必须先设置该值才能使用 `SessionsMiddleware`。
|
||||
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
|
||||

|
||||
|
||||
在发行版下,选择 Ubuntu 18.04 LTS。以下指南将以此版本为例。
|
||||
在发行版下,选择 Ubuntu 22.04 LTS。以下指南将以此版本为例。
|
||||
|
||||

|
||||
|
||||
!!! note "注意"
|
||||
你也可以选择 Swift 支持的其它 Linux 发行版。在撰写本文时, Swift 5.2.4 支持 Ubuntu 16.04、18.04、20.04、CentOS 8, 和 Amazon Linux 2。你可以在 [Swift Releases](https://swift.org/download/#releases) 页面上查看官方支持哪些操作系统。
|
||||
你也可以选择 Swift 支持的其它 Linux 发行版。在撰写本文时, Swift 5.7.3 支持 Ubuntu 18.04、20.04、22.04、CentOS 7, 和 Amazon Linux 2。你可以在 [Swift Releases](https://swift.org/download/#releases) 页面上查看官方支持哪些操作系统。
|
||||
|
||||
选择完发行版后,选择你喜欢的套餐和数据中心所在区域。然后设置一个 SSH 密钥以在创建服务器后访问它。最后, 点击创建 Droplet 并等待新服务器启动。
|
||||
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
ssh root@your_server_ip
|
||||
```
|
||||
|
||||
在 [Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04) 上初始化服务器设置,DigitalOcean 提供了深入指南。 本指南将快速介绍一些基础知识。
|
||||
在 [Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04) 上初始化服务器设置,DigitalOcean 提供了深入指南。 本指南将快速介绍一些基础知识。
|
||||
|
||||
### 配置防火墙
|
||||
|
||||
|
|
@ -77,38 +77,40 @@ ssh vapor@your_server_ip
|
|||
|
||||
```sh
|
||||
sudo apt-get update
|
||||
sudo apt-get install clang libicu-dev libatomic1 build-essential pkg-config
|
||||
sudo apt-get install binutils git gnupg2 libc6-dev libcurl4-openssl-dev
|
||||
\ libedit2 libgcc-9-dev libpython3.8 libsqlite3-0 libstdc++-9-dev
|
||||
\ libxml2-dev libz3-dev pkg-config tzdata unzip zlib1g-dev
|
||||
```
|
||||
|
||||
### 下载 Toolchain
|
||||
### 下载 Swift Toolchain
|
||||
|
||||
本指南将安装 Swift 5.2.4。访问 [Swift Releases](https://swift.org/download/#releases) 页面获取最新版本的链接。复制 Ubuntu 18.04 的下载链接。
|
||||
本指南将安装 Swift 5.7.3。访问 [Swift Releases](https://swift.org/download/#releases) 页面获取最新版本的链接。复制 Ubuntu 22.04 的下载链接。
|
||||
|
||||

|
||||
|
||||
下载并解压 Swift toolchain。
|
||||
|
||||
```sh
|
||||
wget https://swift.org/builds/swift-5.2.4-release/ubuntu1804/swift-5.2.4-RELEASE/swift-5.2.4-RELEASE-ubuntu18.04.tar.gz
|
||||
tar xzf swift-5.2.4-RELEASE-ubuntu18.04.tar.gz
|
||||
wget https://download.swift.org/swift-5.7.3-release/ubuntu2204/swift-5.7.3-RELEASE/swift-5.7.3-RELEASE-ubuntu22.04.tar.gz
|
||||
tar xzf swift-5.7.3-RELEASE-ubuntu22.04.tar.gz
|
||||
```
|
||||
|
||||
!!! note "注意"
|
||||
Swift 的[使用下载指南](https://swift.org/download/#using-downloads)包含有关如何使用 PGP 签名验证下载的信息。
|
||||
|
||||
### 安装 Toolchain
|
||||
### 安装 Swift Toolchain
|
||||
|
||||
将 Swift 移到易于访问的地方。本指南将 `/swift` 与子文件夹中的每个编译器版本一起使用。
|
||||
|
||||
```sh
|
||||
sudo mkdir /swift
|
||||
sudo mv swift-5.2.4-RELEASE-ubuntu18.04 /swift/5.2.4
|
||||
sudo mv swift-5.7.3-RELEASE-ubuntu22.04 /swift/5.7.3
|
||||
```
|
||||
|
||||
将 Swift 添加到 `/usr/bin` 以便 `vapor` 和 `root` 用户可以执行。
|
||||
|
||||
```sh
|
||||
sudo ln -s /swift/5.2.4/usr/bin/swift /usr/bin/swift
|
||||
sudo ln -s /swift/5.7.3/usr/bin/swift /usr/bin/swift
|
||||
```
|
||||
|
||||
验证 Swift 是否正确安装。
|
||||
|
|
@ -117,52 +119,72 @@ sudo ln -s /swift/5.2.4/usr/bin/swift /usr/bin/swift
|
|||
swift --version
|
||||
```
|
||||
|
||||
## 设置项目
|
||||
## 使用 Vapor 工具箱安装 Vapor
|
||||
|
||||
现在已经安装了 Swift,让我们克隆并编译项目。本示例,我们使用 Vapor 的 [API 模板](https://github.com/vapor/api-template/)。
|
||||
现在已经安装了 Swift,让我们 Vapor工具箱来安装 Vapor。你需要通过源码在构建工具箱。在 GitHub 上查看工具箱的[发布](https://github.com/vapor/toolbox/releases)版本,以查找最新版本。在本例中,我们使用 18.6.0 版本。
|
||||
|
||||
首先安装 Vapor 的系统依赖项。
|
||||
### 克隆并构建 Vapor
|
||||
|
||||
克隆 Vapor 工具箱仓库。
|
||||
|
||||
```sh
|
||||
sudo apt-get install openssl libssl-dev zlib1g-dev libsqlite3-dev
|
||||
git clone https://github.com/vapor/toolbox.git
|
||||
```
|
||||
|
||||
允许 HTTP 通过防火墙。
|
||||
切换到最近的发布版本。
|
||||
|
||||
```sh
|
||||
sudo ufw allow http
|
||||
cd toolbox
|
||||
git checkout 18.6.0
|
||||
```
|
||||
|
||||
### 克隆和构建
|
||||
|
||||
现在克隆项目并构建它。
|
||||
构建 Vapor 并将二进制文件移动到你的 path 中。
|
||||
|
||||
```sh
|
||||
git clone https://github.com/vapor/api-template.git
|
||||
cd api-template
|
||||
swift build
|
||||
swift build -c release --disable-sandbox --enable-test-discovery
|
||||
sudo mv .build/release/vapor /usr/local/bin
|
||||
```
|
||||
|
||||
### 创建 Vapor 项目
|
||||
|
||||
使用工具箱的 new 命令初始化项目。
|
||||
|
||||
```sh
|
||||
vapor new HelloWorld -n
|
||||
```
|
||||
|
||||
!!! tip "建议"
|
||||
如果生产环境进行构建, 请使用 `swift build -c release`
|
||||
`-n` 标志表示自动回答所有问题为 no,并提供一个基础的模板。
|
||||
|
||||
|
||||

|
||||
|
||||
命令执行完成后,切换到新创建的文件夹:
|
||||
|
||||
```sh
|
||||
cd HelloWorld
|
||||
```
|
||||
|
||||
### 打开 HTTP 端口
|
||||
|
||||
为了访问服务器上的 Vapor 程序,需要开启相应 HTTP 端口。
|
||||
|
||||
```sh
|
||||
sudo ufw allow 8080
|
||||
```
|
||||
|
||||
### 运行
|
||||
|
||||
项目编译完成后,在服务器的 IP 端口80上运行它。本示例的 IP 地址为 `157.245.244.228`。
|
||||
现在 Vapor 已经设置好了,并且有了公开的端口,让我们启动它吧。
|
||||
|
||||
```sh
|
||||
sudo .build/debug/Run serve -b 157.245.244.228:80
|
||||
vapor run serve --hostname 0.0.0.0 --port 8080
|
||||
```
|
||||
|
||||
如果你使用 `swift build -c release` 进行构建, 然后你需要运行:
|
||||
```sh
|
||||
sudo .build/release/Run serve -b 157.245.244.228:80
|
||||
```
|
||||
|
||||
通过浏览器或者本地终端访问服务器的 IP, 你应该会看到 “It works!”。
|
||||
通过浏览器或者本地终端访问服务器的 IP, 你应该会看到 “It works!”。本例中的 IP 地址为 `134.122.126.139`。
|
||||
|
||||
```
|
||||
$ curl http://157.245.244.228
|
||||
$ curl http://134.122.126.139:8080
|
||||
It works!
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -744,6 +744,10 @@ app.middleware.use(User.sessionAuthenticator())
|
|||
* 会话中间件获取请求中提供的会话 cookie 并将其转换为会话
|
||||
* 会话身份认证器获取会话,并查看该会话是否有经过身份验证的用户。如果是,中间件对请求进行身份验证。在响应中,会话身份认证器查看请求是否具有经过身份验证的用户,并将其保存在会话中,以便在下一个请求中对其进行身份验证。
|
||||
|
||||
!!! note "注意"
|
||||
默认情况下会话 cookie 不会设置为 `secure` 和 `httpOnly`。查看 [Session API](../advanced/sessions.zh.md#configuration) 获取更多关于配置 cookie 的信息。
|
||||
|
||||
|
||||
### 保护路由
|
||||
|
||||
当保护 API 的路由时,如果请求没有经过身份验证,通常会返回一个包含状态码(比如 **401 未经授权**)的 HTTP 响应。然而,对于使用浏览器的用户来说,这并不是一个很好的用户体验。Vapor 提供了一个 `RedirectMiddleware` 中间件,用于该场景中的任何 `Authenticatable` 类型:
|
||||
|
|
|
|||
Loading…
Reference in New Issue