Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在收割台中传递JWT_Javascript_Node.js_Express_Json Web Token_Express Jwt - Fatal编程技术网

Javascript 在收割台中传递JWT

Javascript 在收割台中传递JWT,javascript,node.js,express,json-web-token,express-jwt,Javascript,Node.js,Express,Json Web Token,Express Jwt,我正在用NodeJs学习JWT。我在头球突破JWT时被卡住了,实际上我不知道怎么做 index.js文件 var express = require('express'), app = express(), routes = require('./routes'), bodyParser = require('body-parser'), path = require('path'), ejs = require('ejs'), jwt = require('jsonwebtoken

我正在用NodeJs学习JWT。我在头球突破JWT时被卡住了,实际上我不知道怎么做

index.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");
});
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
    });
};
路由/index.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");
});
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
    });
};
当我运行应用程序时,我在
console.log中获取令牌

如何在标头中传递令牌并将其存储在浏览器的localStorage中?

正如@ChicoDelaBarrio告诉您的,这取决于客户端。邮递员是开始检查后端的好地方。但是,在服务器工作之后,您必须开始在客户端工作

如果您想要一个完整的Node.js中关于JWT的后端示例,其中包含刷新令牌,我建议您发表以下文章:
也许您可以重用大部分代码。在这种情况下,头不是用BEARER创建的,而是在开始时用JWT创建的,但它的工作原理与@ChicoDelaBarrio告诉您的相同,这取决于客户端。邮递员是开始检查后端的好地方。但是,在服务器工作之后,您必须开始在客户端工作

如果您想要一个完整的Node.js中关于JWT的后端示例,其中包含刷新令牌,我建议您发表以下文章:
也许您可以重用大部分代码。在这种情况下,头不是用BEARER创建的,而是在开始时用JWT创建的,但它的工作原理是相同的,因此您希望将令牌发送到前端,而不是发送到主体中

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

res.cookie('tokenKey', 'ajsbjabcjcTOKENajbdcjabdcjdc');
使用授权头也是一种很好的方法,但是在前端,您必须从头中获取令牌,然后保存在localStorage或cookie中,而在使用cookie时不必这样做

res.header(field [, value]);

因此,您希望将令牌发送到前端,但不发送到正文中

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

res.cookie('tokenKey', 'ajsbjabcjcTOKENajbdcjabdcjdc');
使用授权头也是一种很好的方法,但是在前端,您必须从头中获取令牌,然后保存在localStorage或cookie中,而在使用cookie时不必这样做

res.header(field [, value]);

这发生在客户端。您正在从web调用您的express应用程序吗?安卓网间网操作系统?每个客户端都需要处理令牌,并将其作为标题附加到请求中:“授权”:“持证人”(“持证人”只是将其与passport一起使用的惯例)@ChicoDelaBarrio我知道如何才能做到这一点?这取决于客户端。我建议在使用res.json({authsuccess:true,description:'sending the Access Token',Token:Token})发送响应时,从使用postman开始测试您的请求
我收到此错误->
错误[ERR\u HTTP\u HEADERS\u SENT]:无法在发送到客户端后设置头文件
这是因为在“resposnse.render”之后不能使用“respinse.json()”。你只能回复一次。此错误与JWT无关。此错误发生在客户端。您正在从web调用您的express应用程序吗?安卓网间网操作系统?每个客户端都需要处理令牌,并将其作为标题附加到请求中:“授权”:“持证人”(“持证人”只是将其与passport一起使用的惯例)@ChicoDelaBarrio我知道如何才能做到这一点?这取决于客户端。我建议在使用res.json({authsuccess:true,description:'sending the Access Token',Token:Token})发送响应时,从使用postman开始测试您的请求我收到此错误->
错误[ERR\u HTTP\u HEADERS\u SENT]:无法在发送到客户端后设置头文件
这是因为在“resposnse.render”之后不能使用“respinse.json()”。你只能回复一次。此错误与JWT无关谢谢我会调查的。谢谢我会调查的。谢谢,但我在一周前通过
res.cookie('auth',token')解决了此问题仅此而已。哦,对不起!它没有被标记为应答,所以我想帮点忙。NvmThanks,但我在一周前通过
res.cookie('auth',token)解决了这个问题仅此而已。哦,对不起!它没有被标记为应答,所以我想帮点忙。非挥发性物质