微信小程序redis缓存token不成功
- 我想实现小程序登录功能,用取得的seesion_key和openId生成一个token放进redis中
- 代码如下,redis存数据那步不能成功
app.get('/onLogin',function(req,res,next){
console.log("onLogin 接口访问成功")
// console.log("req code",req)
let JSCODE=req.query.code
let hasToken=req.query.token
let wechatUrl="https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code="+JSCODE+"&grant_type=authorization_code"
let grant_type='authorization_code'
// console.log(JSCODE)
request(wechatUrl,(err,response,body)=>{
// console.log(response)
let data=JSON.parse(body)
console.log(data)
res.set({
"Access-Control-Allow-Origin": "*"
,"Access-Control-Allow-Methods": "POST,GET"
,"Access-Control-Allow-Credentials": "true"
});
// res.json(data)
// 存进redis openid session_key
// 如果没有带token参数,生成token
//
if(hasToken){
jwt.verify(token, 'secrect', function(err, decoded) {
console.log(decoded.openid) // bar
// 验证登录状态
let id=decoded.openid
client.on("connect",function(){
client.get("id",function(err,value){
// token过期或者其他问题
if(err){
// throw(err)
let token=jwt.sign({
name:data.openid,
data:data
})
client.set("openid")
}
else{
console.log("已经登录")
}
})
})
});
}
//token为空第一次登录,将token存入
else{
console.log("未携带token")
let token=jwt.sign({
name: data.openid,
data: data
}, "secrect", {
expiresIn: 60 * 1
})
// 这里为何没有执行?
client.on("ready",function(){
console.log("client 连接成功222")
})
// 未执行
client.on("connect",function(){
console.log("connect success")
client.set("test",token,redis.print)
res.json({
token:token
})
})
}
// res.json({
// result: 'ok',
// token: token
// })
})
})
- 这里为何没有执行,如果我把这句话放到全局中是可以打印出来的,我放到app.js中会打印出相关信息,也能正确操作,放到这个路由中就没有反应,为什么?
client.on("ready",function(){
console.log("client 连接成功222")
})
- npm用的
jsonwebtoken
和redis
jsonwebtoken中如果token过期了 jwt.verify还会验证通过么?如果我想让redis中token是否过期,是这样写么?
if(hasToken){
jwt.verify(token, 'secrect', function(err, decoded) {
console.log(decoded.openid) // bar
// 验证登录状态
let id=decoded.openid
client.on("connect",function(){
client.get("id",function(err,value){
// token过期或者其他问题
if(err){
// throw(err)
let token=jwt.sign({
name:data.openid,
data:data
})
client.set("openid")
}
else{
console.log("已经登录")
}
})
})
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论