Я изо всех сил пытаюсь создать систему входа в систему, используя JSON веб-токены.
Я сделал вход (на стороне клиента), который вызывает мой сервер. js file.
Это логин через клиентскую часть. Ниже описана функция отправки дескриптора, которая вызывает сервер. js route login. Как мне использовать токен здесь?
handleSubmit(e) {
e.preventDefault();
if (this.state.email.length < 8 || this.state.password.length < 8) {
alert(`please enter the form correctly `);
} else {
const data = { email: this.state.email, password: this.state.password };
fetch("/login", {
method: "POST", // or 'PUT'
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(data => {
console.log("Success:", data);
})
.catch(error => {
console.error("Error:", error);
});
}
}
catch(e) {
console.log(e);
}
Это маршрут входа на мой сервер. js. Как вы можете видеть, я назначил jwt, но как мне отослать его обратно в форму входа в систему и использовать его для защищенных маршрутов.
app.post("/login", async (req, response) => {
try {
await sql.connect(config);
var request = new sql.Request();
var Email = req.body.email;
var Password = req.body.password;
console.log({ Email, Password });
request.input("Email", sql.VarChar, Email);
request.input("Password", sql.VarChar, Password);
const result = await request.execute("dbo.LoginUser");
if (result.recordsets[0].length > 0) {
console.info("/login: login successful..");
console.log(req.body);
const token = jwt.sign({ user: Email }, "SECRET_KEY", {
expiresIn: 3600000
});
var decoded = jwt.verify(token, "SECRET_KEY");
console.log(decoded);
response.status(200).json({
ok: true,
user: Email,
token: token
});
console.log(token);
} else {
console.info("/login: bad creds");
response.status(400).send("Incorrect email and/or Password!");
}
} catch (err) {
console.log("Err: ", err);
response.status(500).send("Check api console.log for the error");
}
});
По сути, все, что я хочу, - это чтобы мой обработчик отправки вызывался для входа в систему. , Сервер возвращает токен jwt, который затем можно использовать для проверки других маршрутов.