Skip to content

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

Closed
@xiaolexi

Description

@xiaolexi
版本号:
问题描述:

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

错误日志&截图:

image

image

重现步骤:

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

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

Activity

zhangdaiscott

zhangdaiscott commented on Nov 13, 2023

@zhangdaiscott
Member

你这不默认返回了admin了吗

dengyingfeng2022

dengyingfeng2022 commented on Nov 13, 2023

@dengyingfeng2022

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

ikalt

ikalt commented on Nov 13, 2023

@ikalt

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

zhangdaiscott

zhangdaiscott commented on Nov 13, 2023

@zhangdaiscott
Member

低版本有严重安全漏洞

zhangdaiscott

zhangdaiscott commented on Nov 13, 2023

@zhangdaiscott
Member

image

gettoken为空导致的

maxwellQAQ

maxwellQAQ commented on Nov 15, 2023

@maxwellQAQ

把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

1298191366 commented on Nov 17, 2023

@1298191366

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @zhangdaiscott@1298191366@xiaolexi@lvdandan16@dengyingfeng2022

        Issue actions

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