Java教程

【金秋打卡】第17天 使用 .env 文件保存敏感信息和 Oauth2 的介绍

本文主要是介绍【金秋打卡】第17天 使用 .env 文件保存敏感信息和 Oauth2 的介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: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 生产环境

指定运行环境

  1. 通过 config/env 文件指定,该文件的内容就是运行环境,如 prod。一般通过构建工具来生成这个文件。
// config/env
prod
  1. 通过 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)
    图片描述
这篇关于【金秋打卡】第17天 使用 .env 文件保存敏感信息和 Oauth2 的介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!