chore(i18n,curriculum): processed translations (#42478)
This commit is contained in:
@@ -10,7 +10,7 @@ dashedName: authentication-strategies
|
||||
|
||||
策略是认证用户的一种方式。 如果你让用户在注册时填写了用户信息,那你就可以基于这些信息进行验证。或者也可以引入第三方登录,如 Google 或者 Github。 对于这个项目的验证策略,我们会采用自己搭建的方式完成。 可以[点击这里](http://passportjs.org/)访问 Passport 网站,查看数以百计的策略。
|
||||
|
||||
引入 `passport-local` 作为依赖,然后将它添加到服务器,就像这样:`const LocalStrategy = require('passport-local');`。
|
||||
引入 `passport-local@~1.0.0` 作为依赖,然后将它添加到服务器,就像这样:`const LocalStrategy = require('passport-local');`
|
||||
|
||||
然后,需要让 passport **使用**一个实例化的 LocalStrategy 对象,这个对象的一些设置已完成。 请注意,接下来的所有代码都应写在连接数据库的回调中,因为它们的执行都依赖数据库。
|
||||
|
||||
|
@@ -10,7 +10,7 @@ dashedName: authentication-with-socket-io
|
||||
|
||||
目前,你还无法确定连接到服务器的用户身份。 虽然 `req.user` 包含用户信息,但这个只在用户直接与服务器交互时产生。当用户通过 web socket 与服务器连接时,由于不存在 `req` 对象,我们就无法获取用户数据。 解决这个问题的方法之一是通过读取和解析请求中包含 passport session 的 cookie,然后反序列化,进而获取用户信息对象。 幸运的是,NPM 上有可以让这个复杂的流程简单化的库。
|
||||
|
||||
添加 `passport.socketio`、`connect-mongo@~3.2.0`、`cookie-parser` 作为依赖,把它们分别赋值给 `passportSocketIo`、`MongoStore`、`cookieParser`。 同时,我们需要从之前引入的 `express-session` 中开辟新的内存空间, 就像这样:
|
||||
添加 `passport.socketio@~3.7.0`、`connect-mongo@~3.2.0`、`cookie-parser@~1.4.5` 作为依赖,把它们分别赋值给 `passportSocketIo`、`MongoStore`、`cookieParser`。 同时,我们需要从之前引入的 `express-session` 中开辟新的内存空间, 就像这样:
|
||||
|
||||
```js
|
||||
const MongoStore = require('connect-mongo')(session);
|
||||
|
@@ -10,7 +10,7 @@ dashedName: hashing-your-passwords
|
||||
|
||||
回过头来看信息安全,你也许记得在数据库中存储明文密码是*绝对*禁止的。 现在,我们需要引入 BCrypt 来解决这个问题。
|
||||
|
||||
添加 BCrypt 作为依赖,并在服务端请求它。 你需要在两个步骤中使用哈希运算:注册和保存新账户,以及登录时检查密码是否正确。
|
||||
添加 `bcrypt@~5.0.0` 作为依赖,并在服务端使用它。 你需要在两个步骤中使用哈希运算:注册和保存新账户,以及登录时检查密码是否正确。
|
||||
|
||||
目前处理注册的路由中,我们是这样把密码添加到数据库的:`password: req.body.password`。 保存哈希值的一个简单方式是在数据库逻辑中添加 `const hash = bcrypt.hashSync(req.body.password, 12);`,然后把 `req.body.password` 替换为 `password: hash`。
|
||||
|
||||
|
@@ -8,7 +8,7 @@ dashedName: implementation-of-social-authentication-ii
|
||||
|
||||
# --description--
|
||||
|
||||
设置 GitHub 验证的最后一步是创建策略本身。 为此,你需要在项目中添加 “passport-github” 依赖,并在 `auth.js` 中 请求它,作为 `GithubStrategy`,像这样:`const GitHubStrategy = require('passport-github').Strategy;`。 别忘了请求和配置 `dotenv`,使用你的环境变量。
|
||||
设置 GitHub 验证的最后一步是创建策略本身。 为此,你需要在项目中添加 `passport-github@~1.1.0` 依赖,并在 `auth.js` 中请求它,作为 `GithubStrategy`,像这样:`const GitHubStrategy = require('passport-github').Strategy;`。 别忘了请求和配置 `dotenv`,使用你的环境变量。
|
||||
|
||||
为了设置 GitHub 策略,我们需要在 Passport 中使用实例化的 `GitHubStrategy`,它可以接收两个参数:一个对象(包括 `clientID`、`clientSecret` 和 `callbackURL`),以及一个回调函数。在这个回调函数中,我们要处理验证成功时,判断用户是否已经在数据库中存在的逻辑,以及在用户数据库对象中最初保存哪些字段。 这种处理方式适用于绝大部分第三方验证策略,但有些策略会需要我们提供更多的信息,详情请参考相关策略的 GitHub README。 例如,Google 的验证策略会要求你提供一个 *scope*,用于标示用户成功登录后,你需要从返回的对象中获取那些信息。以及,这也需要经过用户同意,你才可以获取到。 你可以在[这里](https://github.com/jaredhanson/passport-github/)了解当前我们使用的验证策略的用法,不过我们也会在 freeCodeCamp 课程中进行详细讲解。
|
||||
|
||||
|
@@ -12,7 +12,7 @@ dashedName: serialization-of-a-user-object
|
||||
|
||||
我们需要用到序列化和反序列化的方法来进行配置。 passport 为我们提供了 `passport.serializeUser( OURFUNCTION )` 和 `passport.deserializeUser( OURFUNCTION )` 两个方法。
|
||||
|
||||
`serializeUser` 方法接收两个参数,分别是表示用户的对象和一个回调函数。 其中,回调函数的返回值应为这个用户的唯一标识符:最简单的写法就是让它返回用户的 `_id`。 这个属性是 MongoDB 为用户创建的唯一字段。 类似地,`deserializeUser` 也接收两个参数,分别是在序列化时生成的标识符以及一个回调函数。在回调函数里,我们需要根据根据传入的标识符(比如 \_id)返回表示用户的对象。 为了在 MongoDB 中通过 query(查询语句)获取 `_id` 字段,首先我们需要创建 `const ObjectID = require('mongodb').ObjectID;`;然后调用它:`new ObjectID(THE_ID)`。 当然,这一切的前提都是先引入 MongoDB 作为依赖。 你可以在下面的例子中看到:
|
||||
`serializeUser` 方法接收两个参数,分别是表示用户的对象和一个回调函数。 其中,回调函数的返回值应为这个用户的唯一标识符:最简单的写法就是让它返回用户的 `_id`。 它应当是唯一的,是由 MongoDB 产生的。 类似地,`deserializeUser` 也接收两个参数,分别是在序列化时生成的标识符以及一个回调函数。在回调函数里,我们需要根据根据传入的标识符(比如 \_id)返回表示用户的对象。 为了在 MongoDB 中通过 query(查询语句)获取 `_id` 字段,首先我们需要创建 `const ObjectID = require('mongodb').ObjectID;`;然后调用它:`new ObjectID(THE_ID)`。 确保添加 `mongodb@~3.6.0` 作为依赖项。 你可以在下面的例子中看到:
|
||||
|
||||
```js
|
||||
passport.serializeUser((user, done) => {
|
||||
|
@@ -10,9 +10,9 @@ dashedName: set-up-passport
|
||||
|
||||
现在我们来创建 *Passport*,最终我们需要用它来实现用户注册和登录。 除了 Passport,我们还会用 Express-session 来处理 session(会话)。 在客户端,我们可以用这个中间件把 session id 储存到 cookie。同时,我们可以在服务器上通过这个 id 访问 session 数据。 通过这种方式,我们无需把用户的个人账号信息存到 cookie,来完成用户的验证。只需要用这个 id 作为 *key* 来访问服务器上用户的数据即可。
|
||||
|
||||
为了在你的项目中使用 Passport,首先你需要在 package.json 文件中添加依赖: `"passport": "^0.3.2"`。
|
||||
为了在你的项目中使用 Passport,首先你需要在 package.json 文件中添加依赖: `passport@~0.4.1`
|
||||
|
||||
此外,还需要添加 Express-session 作为依赖。 Express-session 有许多高级特性,但我们暂时只需要了解其基础功能。 `"express-session": "^1.15.0"`
|
||||
此外,还需要添加 Express-session 作为依赖。 Express-session 有许多高级特性,但我们暂时只需要了解其基础功能。 `express-session@~1.17.1`
|
||||
|
||||
现在,我们需要配置 session 并初始化 Passport。 请先创建变量 “session” 和 “passport” 来分别引入 “express-session” 和 “passport”。
|
||||
|
||||
|
@@ -10,7 +10,7 @@ dashedName: set-up-the-environment
|
||||
|
||||
在接下来的挑战中,我们将会用到 `chat.pug` 文件。 首先,在你的 `routes.js` 文件中为 `/chat` 添加一个处理 GET 请求的路由,并给它传入 `ensureAuthenticated`。在回调函数中,我们需要让它渲染 `chat.pug` 文件,并在响应中包含 `{ user: req.user }` 信息。 现在,请修改 `/auth/github/callback` 路由,让它可以像这样设置 user_id:`req.session.user_id = req.user.id`,并在设置完成后重定向至 `/chat`。
|
||||
|
||||
我们还需要添加 `http` 和 `socket.io` 两个依赖项,并且像这样引入:
|
||||
添加 `socket.io@~2.3.0` 作为依赖项,并且在你的服务器中和 `http` (内置在 Nodejs 中)一起导入/实例化。具体如下:
|
||||
|
||||
```javascript
|
||||
const http = require('http').createServer(app);
|
||||
|
Reference in New Issue
Block a user