当前位置: 首页 > 后端技术 > Node.js

登录权限验证token

时间:2023-04-03 12:07:06 Node.js

原理是后端不存储认证信息,而是在用户登录时生成一个token,然后返回给前端,由前端存储。当需要验证时,将token发送到后端,由后端进行验证和加密。:对称加密和非对称加密,对称加密是指加密和解密使用同一个密钥,非对称加密使用公钥和私钥,加密使用私钥加密,解密使用公钥解密主要过程:用户登录时,生成token,token中要包含payload(data)cert(key)确定加密方式返回给前端cookie,前端存储前端并将token发送给后端用于请求数据时进行token验证,并检查过期时间验证安装并安装jsonwebtokennpminstalljsonwebtoken-S1。公钥加密和公钥解密1.生成一个秘钥,作为cookie返回给前端//对称加密let_payload={//密钥加密数据userid:_judge_result[0]._id,username:_judge_result[0].username,level:8,}let_cert='iloveu'//keyvar_token=jwt.sign(_payload,_cert);res.cookie('token',_token)//发送cookie2。再次请求时,后端解密vardecoded=jwt.verify(req.cookies.token,'iloveu');2.公钥加密公钥解密生成秘钥生成私钥:ssh-keygen-trsa-b2048-fprivate.keygeneratepublickeyopensslrsa-inprivate.key-pubout-outformPEM-outpublic.key1。私钥加密//非对称加密let_payload={//密钥加密数据userid:_judge_result[0]._id,username:_judge_result[0].username,level:8,}//取出私钥let_private=fs.readFileSync(PATH.resolve(__dirname,'../keys/private.key'))var_token=jwt.sign(_payload,_private,{algorithm:'RS256'});//加密res.cookie('token',_token);//发送解密公钥到前端2.let_public=fs.readFileSync(PATH.resolve(__dirname,'../keys/public.key'));//获取公钥vardecoded=jwt.verify(req.cookies.token,_public,{algorithm:'RS256'});//公钥解密