commit a9523058c4866601f01521019aa953eef9f8e8ab Author: Luk Lu Date: Mon Jun 1 16:26:32 2020 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..28f1ba7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..0bca7e8 --- /dev/null +++ b/index.js @@ -0,0 +1,33 @@ +const JsonWebToken = require('jsonwebtoken') + +const crypto = require('crypto') + +module.exports={ + createToken: function(content, key) { // content 可以是数字,字符串或对象,不可以是数组。 + key=key||(wo&&wo.Config&&wo.Config.tokenKey?wo.Config.tokenKey:'') // key或wo.Config.tokenKey其中之一必须存在 + if (content && !Array.isArray(content) && typeof(key)==='string' && key.length>0){ // 注意,jwt.sign(null|'') 会出错。但 sign(0)可以的。 + try{ + return JsonWebToken.sign(content, crypto.createHash('sha256').update(key, 'utf8').digest('hex')) + }catch(exp){ + return null + } + } + return null + } + , + verifyToken: function(token, key) { + key=key||(wo&&wo.Config&&wo.Config.tokenKey?wo.Config.tokenKey:'') // key或wo.Config.tokenKey其中之一必须存在 + if (token && typeof token==='string' && typeof(key)==='string' && key.length>0) { + try{ + token=JsonWebToken.verify(token, crypto.createHash('sha256').update(key, 'utf8').digest('hex')) + }catch(exp){ + return null + } + if (Date.now() - Date.parse(token.whenStamp) > 2*60*60*1000) { // 每过2小时,核对一遍密码 + + } + return token + } + return null + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e87e9fb --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "so.base", + "version": "0.1.0", + "private": true, + "dependencies": { + "jsonwebtoken": "^7.2.1" + }, + "devDependencies": {}, + "scripts": { + "setup": "npm install" + }, + "author": "" +}