用 node 实现仿微信风格的 token 获取接口
来源:互联网 发布:blued相似软件 编辑:程序博客网 时间:2024/06/06 17:44
流程图
依赖项
"dependencies": { "express": "^4.12.3", "jsonwebtoken": "^5.0.0", "mongoose": "^4.0.2", "redis-fast-driver": "0.0.9", }
获取token代码
function get_interface_token(req, res) { Jiekou.findOne({username: req.query.username}, function (err, interface_find) { if (err) throw err; if (!interface_find) { res.json({success: false, message: '认证失败,用户名找不到'}); } else if (interface_find) { // 检查密码 if (interface_find.password != req.query.password) { res.json({success: false, message: '认证失败,密码错误'}); } else { //为接口加入token创建时间,使得每次获取的token都不一样 var time = new Date(); interface_find.token_create_time = time; // 创建token var token = jwt.sign(interface_find, config.secret, { expiresInMinutes: 1440 // 设置过期时间 }); r.rawCall(['hmset', req.query.username, 'token', token], function (err, d) { if (err) throw err; }); r.rawCall(['EXPIRE', req.query.username, config.token_expire_time], function (err, d) { if (err) throw err; }); // json格式返回token res.json({ success: true, message: 'Enjoy your token!', token: token }); } } })}
检测token代码
function checktoken(req, res, next) { //检查post的信息或者url查询参数或者头信息 var token = req.body.token || req.query.token || req.headers['x-access-token']; // 解析 token if (token) { // 确认token jwt.verify(token, config.secret, function (err, decoded) { if (err) { return res.json({success: false, message: 'token信息错误.'}); } else { console.log(decoded.username); r.rawCall(['HEXISTS', decoded.username, 'token'], function (err, d) { if (err) throw err; console.log(d) if (d === 1) { // 如果没问题就把解码后的信息保存到请求中,供后面的路由使用 req.decoded = decoded; next(); } else { return res.status(403).send({ success: false, message: 'token已经过期!' }); next() } }) } }); } else { // 如果没有token,则返回错误 return res.status(403).send({ success: false, message: '没有提供token!' }); }}
代码文件结构
请参考用 nodejs express 搭建 restful api
2 0
- 用 node 实现仿微信风格的 token 获取接口
- jbpm的Token,node
- jbpm的Token,node
- 用Node.js实现Restful风格webservice
- 用Node.js实现Restful风格webservice
- 用Node.js实现Restful风格webservice
- node.js 融云sdk 获取token
- Bmob+融云,node.js获取token
- php 接口的token
- app接口设计之token的php实现
- app接口设计之token的php实现
- app接口设计之token的php实现
- app接口设计之token的php实现
- 使用token和SpringMVC来实现安全的RESTFul接口
- app接口设计之token的php实现
- 130行实现Express风格的Node.js框架
- Node.js 实现简单的接口服务器
- java调用微信接口获取token
- 如何增强eclipse的自动补全功能
- javascript eval和JSON之间的联系
- 屏幕适配
- SpringMVC学习系列(5) 之 数据绑定-2
- Forward与Redirect的区别
- 用 node 实现仿微信风格的 token 获取接口
- IO-00 Hello World! (5)
- google浏览器用于调试手机方法
- SpringMVC学习系列(6) 之 数据验证
- Spring MVC 注解开发WEB
- 使用 CSS 显示 XML
- 写c++代码时,一定要注意初始化!
- Project Euler:Problem 43 Sub-string divisibility
- PCA原理及实现