给用户签发令牌的时候需要用到一对密钥。下面我们需要生成一对密钥,然后把它们放在环境变量里,作为应用的配置。
生成密钥对
我准备了一个命令行工具,可以快速生成一对密钥,在终端,执行一下 npx generate-ssh-keys,使用 npx 可以不用安装这个工具,直接运行它。
这里会显示生成的密钥对,里面有公钥,还有私钥,另外在下面还有对应的 base64 编码之后的密钥对,我们要使用这种格式的密钥,因为它是单行内容,可以更方便的放在环境变量里。
环境变量
先复制一下这个 base64 格式的公钥,打开项目的 .env 文件,在这里添加两个环境变量,先添加一个 JWT_PUBLIC_KEY ,它的值就是刚才复制的内容。
再回到终端,复制一下 base64 格式的私钥内容,回到 .env 文件,添加一个环境变量,名字是 JWT_PRIVATE_KEY,把刚才复制的东西作为这个环境变量的值。
配置
在 auth 的下面,新建一个配置文件,放在 configs 的下面,名字是 auth.config.ts ,在文件里默认导出一个函数,它返回的东西是一个对象,对象里面添加一个 jwt ,它又是一个对象,里面添加一个 publicKey,对应的值可以用一下 Buffer.from,把 JWT_PUBLIC_KEY 这个环境变量的值交给它,指定一下格式,是 base64,然后调用 toString() 这个方法。这里就是把 base64 编码的公钥内容转换成正常格式的公钥。
复制一份,再添加一个 privateKey,对应的值就是转换之后的 JWT_PRIVATE_KEY 这个环境变量的值。
载入配置
打开 app.module ,在文件顶部,导入 authConfig ,来自上一级目录 auth/configs 下面的 auth.config 。
然后在 ConfigModule 的 load 这里,添加一个 authConfig,载入这个配置。