init
This commit is contained in:
		
						commit
						a9523058c4
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
node_modules
 | 
			
		||||
.DS_Store
 | 
			
		||||
							
								
								
									
										33
									
								
								index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								index.js
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "so.base",
 | 
			
		||||
  "version": "0.1.0",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "jsonwebtoken": "^7.2.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {},
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "setup": "npm install"
 | 
			
		||||
  },
 | 
			
		||||
  "author": ""
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user