我正在尝试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登录。
任何想法都值得赞赏。
答案 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
}