【发布时间】:2020-05-08 01:48:44
【问题描述】:
我正在 oclif 中编写一个 cli,它使用来自用 node.js 编写的 rest api 的数据。我正在尝试执行发送用户名和密码的发布请求,从 api 接收令牌并进行验证。
我的代码在文件(Login.ts)中如下:
import Command from '@oclif/command'
import axios from 'axios'
import {flags} from '@oclif/command'
const bcrypt = require('bcrypt');
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
export class LoginCommand extends Command {
static flags = {
user: flags.string({dependsOn:['passw']}),
//email: flags.string({dependsOn:['passw'],exlucsive:['user']}),
passw: flags.string()
}
async run() {
const {flags} = this.parse(LoginCommand);
var hash = bcrypt.hashSync(`${flags.passw}`,10);
var fs=require('fs');
var privateKey = fs.readFileSync('private.key');
const token=await axios.post('https://localhost:8765/energy/api/Login?username=' +`${flags.user}` +'&passw=' + hash);
jwt.verify(JSON.stringify(token),privateKey,function(err,decoded){
fs.writeFileSync('softeng19bAPI.token',JSON.stringify(token));
});
我在文件中的代码(entry.routes.js):
app.post("/energy/api/Login", function(req,res){
var jwt=require('jsonwebtoken');
var password,e,a,q,p;
sql.query(`SELECT user,pass,quota,apikey,email FROM users WHERE user=?`,[req.query.username],(err,res1) => {
console.log(res1);
password=res1[0].pass;
e=res1[0].email;
a=res1[0].apikey;
q=res1[0].quota;
p=res1[0].privileges;
});
if(req.query.passw = password){
var jwt=require('jsonwebtoken');
var privateKey = fs.readFileSync('/home/vangelis/softeng/energy/private.key');
var token = jwt.sign({user:req.query.user ,passw: req.query.passw,email: e, quota: q,apikey: a,privileges: p }, privateKey, { algorithm: 'RS256' });
res.status(200).send(token);
}
else res.status(400).send("Bad Request");
});
}
我认为这个错误通常是由 axios post 请求产生的,但我找不到错误发生了。
【问题讨论】:
-
您的第二个代码 sn-p 显示它在
else分支中发送 400...顺便说一句,在 JavaScript 中==比较两个项目=将左侧分配到右侧。再次阅读该代码时需要考虑的事情...
标签: javascript node.js express jwt axios