zoukankan      html  css  js  c++  java
  • cube.js checkAuth 问题记录

    默认cube.js 是基于jwt 进行认证的,当我们没有配置checkAuth 函数的时候,cube.js 的api server 会自动进行jwt 的解码
    同时放到securityContext中,但是当我们自己配置了之后就不会自动处理securityContext了

    解决方法

    自己实现jwt 的解码,同时生成securityContext

    • 参考demo
     
    // Cube.js configuration options: https://cube.dev/docs/config
    const {MaterializeDriver,MaterializeQuery} = require("@dalongrong/materialize-driver")
    const {DremioDriver,DremioQuery} = require("@dalongrong/mydremio-driver")
    const MyS3FileRepository = require("@dalongrong/cube-s3repository")
    const jwt = require('jsonwebtoken');
     
    module.exports = {
        dialectFactory: (dataSource) => {
            // need config  datasource  for multitenant env
            return DremioQuery
        },
        checkAuth: async (req, auth) => {
                // 注意异常处理
               var secret = process.env.CUBEJS_API_SECRET
               console.log("secret:",secret)
               const decoded = jwt.decode(auth, { complete: true });
               console.log(decoded)
               req.securityContext = decoded.payload;
        },
        queryTransformer: (query, { securityContext }) => {
            console.log(securityContext)
            return query;
          },
        dbType: ({ dataSource } = {}) => {
            return "mydremio"
        },
        driverFactory: ({ dataSource } = {}) => {
            return new DremioDriver({})
        },
        repositoryFactory: ({securityContext})=>{
            return new MyS3FileRepository.S3FileRepository({
                objectPrefix:"appdemo/"
            })
        }
    };

    参考资料

    https://cube.dev/docs/reference/environment-variables
    https://cube.dev/docs/config#options-reference-check-auth

  • 相关阅读:
    Noe4j启动警告
    SpringBoot
    MySQL数据库 java SQL语句区分大小写分析
    day24 模块的语法
    day23 re模块
    day22 常用模块02 序列化
    day21 常用模块01
    day20 面向对象06 MRO和C3算法
    day19 面向对象05 约束
    day18 面向对象04 反射
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14634590.html
Copyright © 2011-2022 走看看