Skip to content

请自定义 JmReportTokenServiceI 的实现类,获取用户账号不允许为空! #2151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
xiaolexi opened this issue Nov 13, 2023 · 7 comments

Comments

@xiaolexi
Copy link

版本号:
问题描述:

我已经 按要求实现了接口但是还是会报错:请自定义 JmReportTokenServiceI 的实现类,获取用户账号不允许为空!

错误日志&截图:

image

image

重现步骤:

友情提示(为了提高issue处理效率):

  • 积木报表是一款免费报表产品,功能免费源码不开放;
  • 未按格式要求发帖,会被直接删掉;
  • 请针对问题提供[报表设计配置或SQL脚本]或在官网制作报表示例并提供ID;
  • 针对不好重现的问题,请录制操作视频或详细的重现步骤;
@zhangdaiscott
Copy link
Member

你这不默认返回了admin了吗

@dengyingfeng2022
Copy link

这个问题 我遇到过 需要实现getToken 好像是升级导致的

@ikalt
Copy link

ikalt commented Nov 13, 2023

同样遇到了,降级到1.5.8解决了,别的版本没试,1.6.4版本,实现了getToken还是报这个错,一直解决不了就降版本了

@zhangdaiscott
Copy link
Member

低版本有严重安全漏洞

@zhangdaiscott
Copy link
Member

image

gettoken为空导致的

@maxwellQAQ
Copy link

maxwellQAQ commented Nov 15, 2023

把getToken方法重写,且你需要访问地址时在header里面加上token或在parameter中加上token

参考代码:

@Component(value = "jimuTokenService")
@Primary
public class JmReportTokenService implements JmReportTokenServiceI {

    //获取Token
    @Override
    public String getToken(HttpServletRequest request) {
        String token = request.getParameter("token");
        if (token == null) {
            token = request.getHeader("token");
        }
        return token;
    }

    @Override
    public String getToken() {
        HttpServletRequest request = g.getHttpServletRequest();
        return getToken(request);
    }

    //获取用户名
    @Override
    public String getUsername(String token) {
        return token;
    }

    @Override
    public Map<String, Object> getUserInfo(String token) {
        return JmReportTokenServiceI.super.getUserInfo(token);
    }

    @Override
    public String[] getRoles(String token) {
        return new String[0];
    }

    //校验token
    @Override
    public Boolean verifyToken(String token) {
        return true;
    }

    //获取租户名称
    @Override
    public String getTenantId() {
        return JmReportTokenServiceI.super.getTenantId();
    }

    //重写调用API时的Request请求头
    @Override
    public HttpHeaders customApiHeader() {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Custom-TOKEN", getToken());//自定义
        return httpHeaders;
    }
}

@1298191366
Copy link

已修复,在不开启saasModecreated创建人隔离的情况下。不会再提示

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants