token使用方法(加密cookie)

本文介绍了在无状态请求和第三方登录场景下如何使用token。详细步骤包括安装openssl和perl,解决配置环境变量的问题,以及如何利用openssl生成密钥对。接着,展示了使用jsonwebtoken库生成token,并在前后端交互中验证登录状态。
摘要由CSDN通过智能技术生成

token的使用场景

  1. 无状态请求
  2. 保持用户的登录状态
  3. 第三方登录(token+auth2.0)

token使用流程

  1. 先安装openssl( https://blog.csdn.net/sunhuansheng/article/details/82218678 )
  • 先安装perl
  • 重启电脑
  • 进行 C:\Perl64\eg
  • 以管理员身份运行 perl --help
  • 报错( perl没有配置环境变量 )
  • 安装openssl
  • 软件安装无要求,一路next
  • 重启电脑
  • 然后在命令终端输入openssl,发现报错openssl命令未找到
  • 配置全局的环境变量
  • 在命令终端继续输入openssl,然后报警告:WARNING: can’t open config file: /usr/local/ssl/openssl.cnf
  • 在你得opensll安装路径下找到openssl.cfg,我的路径是 C:\OpenSSL-Win64\bin\openssl.cfg,设置环境变量
    $ set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\bin\openssl.cfg
    C:\Program Files\OpenSSL-Win64\bin
  • 继续输入openssl
    $ openssl
    $ OpenSSL>
  • 注意: 以上两个软件下载是需要翻墙的
  1. 先使用express创建项目
  2. 打造了一个login的post接口
  3. 使用openssl生成一个私钥
  • 要进入某一个项目文件夹中生成
    $ openssl genrsa -out ./private_key.pem 1024
  1. 使用openssl生成公钥
    $ openssl rsa -in ./private_key.pem -pubout -out ./public_key.pem

  2. 安装jsonwebtoken
    $ cnpm i jsonwebtoken -D

  3. 通过私钥生成token

let private_key=fs.readFileSync(path.join(__dirname
Vite是一个现代的前端构建工具,它专注于快速启动和热更新,适合构建高性能的Web应用。JWT(JSON Web Tokens)是一种常用的用于认证和授权的标准协议,它允许服务器将信息安全地发送给客户端,并能在后续请求验证。 在Vite项目使用JWT加密Token的一般步骤如下: 1. 安装依赖:首先需要安装`jsonwebtoken`库,可以使用npm或yarn命令行工具: ```bash npm install jsonwebtoken # 或者 yarn add jsonwebtoken ``` 2. 创建服务端API:在Vite的服务端设置,当用户登录成功后,会生成一个JWT并返回给客户端。例如,使用Node.js和Express: ```javascript const jwt = require('jsonwebtoken'); // 假设有个登录成功的处理函数 async function loginSuccess(user) { const token = jwt.sign({ userId: user.id }, 'your-secret-key', { expiresIn: '1h' }); res.json({ token }); } ``` 3. 客户端存储与验证:客户端接收到JWT后,通常将其存储在浏览器的本地存储或Cookie。在每次向需要授权的API发送请求时,添加Authorization头部,携带Bearer前缀和JWT: ```javascript fetch('/protected-resource', { headers: { Authorization: `Bearer ${localStorage.getItem('jwt')}` }, }) .then(response => response.json()) ``` 4. 服务端验证:在处理受保护资源的API端点上,检查JWT是否有效: ```javascript app.use(async (req, res, next) => { try { const token = req.headers.authorization?.split(' ')[1]; if (!token) return res.status(401).json({ error: 'Unauthorized' }); const decoded = await jwt.verify(token, 'your-secret-key'); req.user = decoded; // 将解码后的数据绑定到req上 next(); } catch (err) { res.status(401).json({ error: 'Unauthorized or Invalid Token' }); } }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值