课程名称:web前端架构师
课程章节:第16周 第六章、第七章
主讲老师:张轩
课程内容: 使用 .env 文件保存敏感信息、Oauth2 的介绍
使用 .env 文件保存敏感信息
在之前我们编写的代码中,我们在 config 文件中保存了我们的一些敏感信息,比如数据库密码、第三方申请的 key 等,这样做是很不安全的,所以我们需要将它给删除掉,保存到我们的环境变量中
egg.js 运行环境
egg.js 运行环境文档地址 https://www.eggjs.org/zh-CN/basics/env
NODE_ENV | EGG_SERVER_ENV | 说明 |
---|---|---|
local | 本地开发环境 | |
test | unittest | 单元测试 |
production | prod | 生产环境 |
指定运行环境
- 通过 config/env 文件指定,该文件的内容就是运行环境,如 prod。一般通过构建工具来生成这个文件。
// config/env
prod
- 通过 EGG_SERVER_ENV 环境变量指定运行环境更加方便,比如在生产环境启动应用
EGG_SERVER_ENV=prod npm start
.env 文件来保存信息
我们还可以在 .env 文件中保存我们的环境变量,同时将该文件添加到 .gitignore 中,防止提交
USER=root
PASSWORD=123456
然后安装 dotenv
npm i dotenv
在 config 文件中引入 doteng
import dotenv from 'dotenv';
dotenv.config();
config.mongoose = {
url: process.env.MONGO_HOST,
options: {
user: process.env.MONGO_USER,
pass: process.env.MONGO_PASS,
dbName: process.env.MONGO_DB,
},
};
Oauth2 的介绍
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,是用来授权第三方应用。
传统方式的缺陷
- 为了后续的服务,会保存用户的密码,这样很不安全。
- 没法限制用户获得授权的范围和有效期。
- 用户只有修改密码,才能收回赋予第三方应用的权力。
- 只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。
Oauth2 的思路
- OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)
- 客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。
- "客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
Token 的优点
- 令牌是短期的,到期会自动失效,用户自己无法修改。
- 令牌可以被数据所有者撤销,会立即失效。
- 令牌有权限范围(scope)
Oatuh2 的授权方式
- 授权码(authorization-code)
- 隐藏式(implicit)
- 密码式(password):
- 客户端凭证(client credentials)
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦