RenderQrCode和权限认证的问题

我设置了一个全局拦截器用于身份验证和权限认证

设置了一个生成二维码的方法然后renderQrCode

在前台不能用jQuery搞 jQuery的ajax只支持纯文本 于是我就手动搞了ajax

function getBinary(url, args, success, error) {
    var xmlhttp = new XMLHttpRequest();
    var data = eval(args);
    var i = 0;
    for (var key in data) {
        if (i++ === 0) {
            url += '?' + key + "=" + data[key];
        } else {
            url += '&' + key + "=" + data[key];
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.responseType = "blob";
    xmlhttp.onload = function () {
        if (this.status === 200) {
            success(this.response);
        } else {
            error(this.response);
        }
    };
    xmlhttp.send();
}

然后发现如果登录了那么能拿到二维码

如果没登录 看不到错误信息 页面也没有反应

但是在控制台能看到response拿到了错误信息

控制台我打印结果出来了这个

2019-06-29 15-14-52 的屏幕截图.png

如果打印this.responseText或者XML 控制台会报错 提示responseType必须是document或者什么都不写才能用

这里我应该怎么处理

评论区

JFinal

2019-06-29 15:36

单步调试定位一下

你当前的信息量,只能猜测,没有登录的情况被拦截器拦截了,用好 @Clear 注解,去掉对部分 action 的拦截

东线战场

2019-06-29 15:39

@JFinal 我需要对这个行为进行认证啊 但是如果是图像返回类型为blob 如果是文字则返回text或者json 但是前台这块没法智能识别的 只能写死写成blob 就是目前设计是前台只能识别返回值类型为blob的东西

东线战场

2019-06-29 15:46

@JFinal 我希望render系列方法能自定义返回http状态码 我现在做的东西都是前台ajax发请求 我给他回json或者别的 没法回页面的 renderError方法在这种情况下不好用

JFinal

2019-06-29 16:12

@东线战场 当前的信息量猜不到什么

东线战场

2019-06-29 16:19

@JFinal 权限认证的方法返回的是json类型的数据(application/json) 二维码的方法返回的是二进制数据(image/png) 前台的ajax要么只认json要么只认二进制数据 如果前台在认证完成之后能显示二维码那么在认证失败的情况下就无法显示认证失败的信息 现在的问题是怎么让他在成功的情况下显示二维码 失败的情况下显示认证失败的信息

热门反馈

扫码入社