tofu-middleware-jwt

JWT middleware of tofu

$ opm get d80x86/tofu-middleware-jwt

tofu-middleware-jwt

JWT (json web token, 跨域资源共享)middleware of tofu 详细参考 https://jwt.io/

安装

    -- 在项目配置文件 tofu.package.lua 添加
    
    deps = {
    
        -- 
        -- 其它配置 ... 
        --
        -- jwt 中间件依赖
        'd80x86/tofu-middleware.jwt',
        {'luarocks', 'cdbattagw/lua-resty-jwt'},
    
        -- 注:因为有使用到 luarocks 依赖, 所以系统须有 luarocks 环境
    }
    
    

> luarocks 可参其它资料进行安装和使用

    ## 使用命令 tofu 安装
    ./tofu install
    

使用

    -- 项目配置文件 conf/middleware.lua
    
    middleware = {
        -- 
        -- .. 其它中间件.. 
        -- ..
    
        -- 添加jwt中间件配置
        {
                handle = 'resty.tofu.middleware.jwt',
                options = {
                                secret = 'jwt secret',
                }
        },
    
        -- .. 其它中间件.. 
    }
    

配置options

| 参数名 | 类型 | 说明 | 缺省 | | ----------- | -------- | -------------------------------------------- | ----- | | secret | string | jwt 签名安全码 | | | key | string | jwt payload 信息保存在 ngx.ctx.state[key] 中 | user | | passthrough | bool | 如果jwt验证出错,是否续续后面的中间件 | false | | gettoken | function | 默认是获取 http header authorization bearer | |

jwt 验证错误消息 jwt_obj 保存在 ngx.ctx.state.jwt_error

    -- jwt_obj 结构 样列
    {
       raw_header  = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9',
       raw_payload = 'eyJmb28iOiJiYXIifQ',
       signature   = 'wrong-signature ...',
       header      = {typ='JWT', alg='HS256'},
       payload     = {foo='bar'},
       verified    = false,
       valid       = true,
       reason      = 'signature mismatched: wrong-signature'
    }
     

> 更多详细 https://github.com/cdbattags/lua-resty-jwt

Authors

d

License

mit

Versions