在标头中传递 JWT

Nik*_*iya 2 javascript node.js express express-jwt json-web-token

我正在使用 NodeJs 学习 JWT。我一直坚持在标头中传递 JWT,实际上我不知道该怎么做。

索引.js 文件

var express = require('express'),
 app = express(),
 routes = require('./routes'),
 bodyParser = require('body-parser'),
 path = require('path'),
 ejs = require('ejs'),
 jwt = require('jsonwebtoken');

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json());

app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

app.post('/home',routes.loginUser);

app.get('/', function(req, res) {
  res.render('index');
});

app.get('/home',function(req, res) {
  jwt.verify(req.token, 'qwertyu6456asdfghj', function(err, data) {
    if (err) {
      res.sendStatus(403);
    } 
  });
});

 app.listen(3000,function(){
  console.log("Server running at Port 3000");
});
Run Code Online (Sandbox Code Playgroud)

路线/index.js 文件

var  jwt = require('jsonwebtoken');

exports.home = function(req, res){
  res.render('home',{error: false});
};

exports.loginUser = function(req, res) {
    var uname = req.body.Username;
    var pwd = req.body.Password;

    if(uname && pwd === 'admin'){
        res.render('home');

    var token = jwt.sign({ user: uname }, 'qwertyuiopasdfghj');
    console.log('Authentication is done successfully.....');
    console.log(token);
    }

    response.json({
        authsuccess: true,
        description: 'Sending the Access Token',
        token: token
    });
};
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我正在获取令牌console.log,但是如何在标头中传递令牌并将其存储在浏览器的 localStorage 中?

Rah*_*hul 6

所以你想将令牌发送到前端而不是正文中。

推荐的方法是使用 cookie。您可以在cookie中设置token,前端和后端都可以自动访问它。

res.cookie('tokenKey', 'ajsbjabcjcTOKENajbdcjabdcjdc');
Run Code Online (Sandbox Code Playgroud)

使用授权标头也是一个好方法,但同样,在前端,您必须从标头中获取令牌,然后保存在 localStorage 或 cookie 中,如果是 cookie,则不必这样做。

res.header(field [, value]);
Run Code Online (Sandbox Code Playgroud)

  • 哦对不起!它没有标记为已回答,所以我想提供一些帮助。非易失性 (2认同)