nodeJS中JWT身份认证使用方法与意义

2023-05-16

1、jwt认证机制的工作原理:

客户端登入提交账号密码,服务器端验证通过将用户信息对象经过加密之后生成token字符串,服务器进行第一次响应,将生成的token字符串相应给客户端保存在local storage或sessionstorage中,当客户端再次发送请求,通过请求头的Authorization字段,将token字符串发给服务器,服务器将token字符串还原为用户的信息对象,用户身份认证成功,服务器将根据当前用户生成特定的响应内容,服务器发送响应。

2、token字符串组成结构与意义:

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,其组成部分为Header、Payload、Signature.Payload部分才是真正的用户信息,它是用户信息经过加密之后生成的字符串,Header和Signature是安全性相关的部分,只是为了保证token的安全性

 

3、使用jsonwebtoken第三方包进行解析生成jwt字符串,使用express-jwt导入客户端发送过来的jwt字符串,解析还原成json对象的包

4、对jwt字符串进行加密定义secret密钥确保jwt字符串安全性,防止网络传输过程中被别人破解,定义的一个用于加密和解密的secret密钥。当生成jwt字符串(服务器端第一次响应时)的时候,需要使用secret密钥对用户的信息进行加密,最终得到加密好的jwt字符串,当把JWT字符串解析还原成JSON对象(第二次服务器响应)的时候,需要使用secret密钥进行解密得出json对象

5、对jwt字符串加密利用在响应报文中的.sign方法返回给客户端token加密字符串


    // TODO_03:在登录成功之后,调用 jwt.sign() 方法生成 JWT 字符串。并通过 token 属性发送给客户端
•    // 参数1:用户的信息对象
•    // 参数2:加密的秘钥
•    // 参数3:配置对象,可以配置当前 token 的有效期时间
•    // 记住:千万不要把密码加密到 token 字符中
•    const tokenStr = jwt.sign({ username: userinfo.username }, secretKey, { expiresIn: '1h' })  

6、jwt字符串还原json对象

客户端每次在访问那些有权限接口的时候,都需要主动通过请求头中的Authorization字段,将Token字符串发送到服务器进行身份认证。 此时,服务器可以通过express-jwt这个中间件,自动将客户端发送过来的Token解析还原成JSON对象:

app.use(expressJWT({ secret: secretKey }).unless({ path: [/^\/api\//] }))

当我们配置成功了expressJWT解析密钥就会自动将我们解析的jwt字符串自动挂载到req.user属性身上。

7、测试:

向客户端发送post请求获取加密后的token字符串,获取成功找有权限的接口在响应头中传递Authorization字段,属性值为Bearer+空格符隔开+post请求获取过来的token字符串(可以简写在服务区中对res.send()中的data属性值进行拼接bearer+空格),进入权限接口利用解密中间件方法解析数据然后返回给客户端。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nodeJS中JWT身份认证使用方法与意义 的相关文章

随机推荐