titbit-token

    2.0.0 • Public • Published

    titbit-token

    用于进行token会话验证的处理。通过make生成token,verify验证token是否有效。

    安装

    npm i titbit-token
    

    如何使用:

    const titbit = require('titbit')
    
    const titok = require('titbit-token')
    
    let tk = new titok()
    
    const app = new titbit({
      debug: true
    })
    
    app.addService('token', tk)
    
    //必须是32位密码
    tk.setKey('1234567890abcdefghijklmnopqrstuv')
    
    app.addService('tok', tk)
    
    app.use(tk.mid(), {group: 'token'})
    
    app.post('/login', async c => {
        //进行登录验证
        
        //...
    
        let userinfo = {
            //....
        }
    
        let token = c.service.token.make(userinfo)
        //最后返回登录成功后的token
        c.send(token)
    
    })
    
    //其他路由都属于需要验证的token分组。
    app.get('/user', async c => {
        //...
    }, {group: 'token'})
    
    app.run(1234)

    这个示例是放在一个程序文件中的完整使用过程。你应该把验证过程放在独立的中间件模块中,让其自动进行token验证。

    初始化以及token的生成和验证

    const titok = require('titbit-token')
    
    let tok = new titok({
        //表示有效期的秒数
        expires: 3600,
    
        //加解密的密钥,长度32。
        key : 'qazxswedcfvrgthynujmkiolpr5tf765',
    
        //初始向量值,用于和最开始的数据块进行运算,长度16。
        iv : 'qawsedrftgyhujie',
    })
    
    let data = {
        id : '1001',
        name : 'world'
    }
    
    let tokenstr = tok.make(data)
    
    let dedata = tok.verify(tokenstr)
    
    console.log(tokenstr, dedata)

    make一定要对键值对形式的数据进行处理并使用JSON.stringify进行序列化,不能传递其他类型的数据。

    verify的返回值是一个对象,属性ok表示是否成功,如果ok为false,则errcode是一个单词描述的状态码信息,并且是大写的。

    如果ok为true,则data是解密后的数据,同时存在now属性是获取的当前时间戳,后续处理不必再次调用Date.now()获取。主要目的是用于根据时间判断是否自动更新token的情况。

    添加自定义的ID以及Key、IV

    make支持第二个参数是token id。使用token id可以进行比较精确的控制,多个应用签发的token可以有不同的token id。要启用此功能,则需要先调用addTokenId添加要识别的应用Id。

    要让不同的id具有不同的key和iv,则可以使用setIdKeyIv。

    const titok = require('titbit-token')
    
    let tok = new titok()
    
    //支持参数是stirng或array,最终都是转换成array,然后循环添加。
    tok.addTokenId(['test', 'app1', 'app2'])
    
    //参数:id、key、iv
    //一旦设置了此值,make生成token的时候,如果
    tok.setIdKeyIv('app1', 'qazxswedcfvrgthynujmkiolp0987654', 'qawsedrftgyhujik')

    自定key、iv、id作为参数

    const titok = require('titbit-token')
    
    let tok = new titok()
    
    let ikv = {
        key : 'qazxswedcfvrgthynujmkiolp0987654',
        iv : 'qawsedrftgyhujik',
        id : 'app1'
    }
    
    let data = {
        id : '1001',
        name : 'unixx'
    }
    
    let token = tok.makeikv(data, ikv)
    
    let dedata = tok.verifyikv(token, ikv)
    
    console.log(token, dedata)

    随机生成iv并生成token

    const titok = require('titbit-token')
    
    let tok = new titok()
    
    let data = {
        id : '1001',
        name : 'unixx'
    }
    
    let t = tok.randIvToken(data)
    
    //返回值t包括token、iv、id、key。
    let dedata = tok.verifyikv(t.token, t)
    
    console.log( t, dedata )

    Install

    npm i titbit-token

    DownloadsWeekly Downloads

    1

    Version

    2.0.0

    License

    ISC

    Unpacked Size

    48.7 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar