为什么我的jsreport身份验证不起作用?

时间:2019-07-11 01:59:53

标签: authentication jsreport

我正在尝试https://jsreport.net/learn/authentication

....
  "extensions": {
    "authentication": {
      "cookieSession": {
        "secret": "<your strong secret here>"
      },
      "admin": {
        "username": "admin",
        "password": "password"
      },
      "enabled": true
    },
......

我还阅读了以下内容:

  

启用此扩展名后,您需要向每个请求添加标头。

     

授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

     

基于用户名和密码的哈希值:base64(username:password)

我尝试同时使用QWxhZGRpbjpvcGVuIHNlc2FtZQ==https://www.motobit.com/util/base64-decoder-encoder.asp来编码:admin:password结果:YWRtaW46cGFzc3dvcmQ=。尝试使用这两种方法似乎都无法使我访问我的API。

(请注意,下面的键是我尝试过的任一键)

我尝试过对jsreport API进行前端调用:return this.http.post(this.hosturl, parameter, { headers: 'Content-Type': 'application/json', 'Authorization': 'Basic ' + this.key }, responseType: 'blob' });

我还尝试过在后端调用jsreport API:

 var data = {
        headers: {
            "Authorization" : "Basic key" 
        },
        template: { "shortid": shortid },
        options: {
            preview: preview
        }
    }

您知道为什么它总是在前端(角度)返回未经授权并提示在后端(快速)登录吗?

PS:在后端API上,用户名:admin和密码:密码由于某些原因而无效。

我只能使用用户名:admin和密码:password从jsreport studio登录。

任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:0)

始终在前端(角度)返回未经授权并在后端(快速)提示登录的原因是错误的实现

我如何解决它:

对于前端:

constructor(){}之后的变量声明:

key = 'YWRtaW46cGFzc3dvcmQ='; header = { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + this.key };

服务中电话:

return this.http.post(this.hosturl, parameter, { headers: this.header, responseType: 'blob' });

对于后端:

var options = {
        uri: 'http://localhost:5488/api/report',
        auth: { user: 'admin', password: 'password'}, 
        method: 'POST',
        json: data
    }