token的思想及使用方式

token

思想

在服务端不需要存储用户的登陆记录,全部将信息发送给客户端自己存储(cookie或者localstroage)
1.客户端输入用户名和密码进行请求登录
2.服务端接受到请求,都数据库进行验证用户名和密码
3.验证成功之后,服务端返回给客户端一个加了密的token
4.客户端收到token之后将其存到cookie或者localstroage中
5.客户端每次向服务端发起请求的时候需要携带者token
6.服务端接收到请求,验证客户端请求里面携带的token,如果验证成功就返回客户端请求的数据

实现

需要jsonwentoken第三方插件的安装引入

let jwt = require('jsonwebtoken')

生成token

let token = jwt.sign(payload,secretOrPrivatekey,[options,callback])
//payload:json还有username,useid,即要加密的对象
//secretOrPrivateKey:加密规则,字符串,或者私钥path模块
//options:可选配置项
//callback:成功的回调,可选,返回制作后的token,也可同步返回

校验token

jwt.verify(token,secretOrPublicKey,[options,callback])
//token:制作后的token
//secretOrPublicKey:解密规则,字符串,或者公钥
//options:expiresIn过期时间
//callback:回调  参数err是错误信息  参数decode成功后的信息

token删除

由客户端进行删除

客户端发起请求登录验证

let express = require('express')//导入express模块
let bodyparser = require('body-parser')//导入body-parser中间件,便于获取非地址栏的参数信息
let app = express()//创建服务
app.listen(3000,()=>{console.log('监听3000端口')})

let jwt = require('jsonwebtoken')//引入jsonwebtoken模块

//用户登录的时候,服务端给客户返回一个token令牌
app.get('/api/login',(req,res)=>{
 	//1.获取username,password进行数据库验证
 	//2.生成token令牌
 	let token = jwt.sign({username:req.query.username},'jiamiguize',{expiresIn:60//过期时间,按照秒算})
 	//3.将token和库信息返回给客户端
 	res.send({
		err:0,
		msg:'登陆成功',
		data:'库数据',
		token
	})

})



//校验token
app.get('/api/user',(req,res)=>{
	//1。获取用户端传来的token
	let token = req.query.token || req.body.token || req.headers.token;
	//无论使用何种形式的传递来的参数都能获取到token
	jwt.verify(token,"jiamiguize",(err,data)=>{
		if(err){//如果err为真,证明token已经失效,校验失败
			res.send({
				err:1,
				mag:'当前登录失败,token失效了'
			})
		}else{
			res.send({
				err:0,
				msg:'成功',
				data:'请求的库数据'
			})
		}
	})
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值