Tag: jwt

如何使用身份validation令牌访问用户数据

我想了解基于令牌的身份validation策略如何使用令牌(例如:JWT)来访问特定于用户的数据。 我在search结果中看到的所有内容都是用户提供用户名和密码的部分,随后每个后续的调用创build并validation令牌。 不要说我有两个MongoDB集合的Node.JS服务: 用户和UserMessages 。 UserMessages中的每个条目都包含一个UserID和一个Message 。 如果经过身份validation的用户想要查看与该用户有关的所有消息,我如何(以编程方式)知道如何过滤正确的消息? 我如何使令牌和用户身份 (例如UserID或其他任何有助于识别用户的身份)之间的关联,以便在下一步中查询消息集合? 我只是想了解这个概念。 我找不到任何地方的代码中获得用户身份的明确例子。 例如 : apiRoutes.use(function(req, res, next) { var token = req.body.token || req.param('token') || req.headers['x-access-token']; if (token) { jwt.verify(token, app.get('superSecret'), function(err, decoded) { if (err) { return res.json({ success: false, message: 'Failed to authenticate token.' }); } else { req.decoded = decoded; next(); } […]

TypeError:jwt.sign不是一个函数

我包括快递等,包括: var expressJwt = require('express-jwt'); //https://npmjs.org/package/express-jwt var secret = 'this is the secret secret secret 12356'; var jwt = require('jsonwebtoken'); //https://npmjs.org/package/node-jsonwebtoken 然后定义我的续集模型和结尾路线,并把它放在这里: app.post('/authenticate', function (req, res) { //TODO validate req.body.username and req.body.password //if is invalid, return 401 if (!(req.body.username === 'john.doe' && req.body.password === 'foobar')) { res.status(401).send('Wrong user or password'); return; } var profile = […]

节点快递护照(JWT) – auth后callback

我有authentication工作与护照智威汤逊,但我有困难运行callback函数/响应, 只有当用户通过身份validation。 如何才能做到这一点? 在我的路线: import express from 'express'; import passport from '../../config/passport'; import memberInfoCtrl from '../controllers/memberInfo'; const router = express.Router(); router.route('/members') .get(membersCtrl.tokenCheck, passport.authenticate('jwt', { session: false }), membersCtrl.doSomethingElse); export default router; 如果authentication成功,我想要membersCtrl.doSomethingElse运行。 这是我的tokenCheckfunction: function tokenCheck(req, res, next) { const token = getToken(req.headers); if (token) { const decoded = jwt.decode(token, config.secret); User.findOne({ email: decoded.email }, (err, […]

关心JWT安全

最近,我使用护照和node.js实现了JWT策略…但是,我开始担心这个概念。 一旦有人访问了智威汤逊,是否可以用来检索受保护的数据呢? 而不是获得访问JWT,就像使用chrome开发工具一样简单? 我可以尝试减less失效date,但是……只要用户的详细信息是相同的,每次产生的令牌也是一样的,这是不是真的? 那么到期日是什么时候,如果你最后还是以同样的道理结束呢? 我相信我在某处错过了这个观点。 指导将不胜感激。 谢谢。

护照JWT req.user在我的一个路由中是未定义的

我有一个绝对的噩梦试图与我的快速应用程序设置智威汤逊! 认为我现在主要工作,我有一个注册路线和login路线,这两个工作正常,并生成有效的令牌,我有我的'/用户'路线中的另一个路线,我testing身份validation,这一切都很好。 但是我有另外一个包含'/ api'path的文件,这个文件的身份validation实际上非常重要,我有一条类似的testing路线,试图访问req.user(就像我在其他路线中那样),但是它看起来像req。用户未定义。 通过一些debugging它看起来像用户在req.account这是非常奇怪的,我不明白为什么它不在req.user 我在/config/passport.js中定义了我的jwt策略 'use strict'; const User = require('../models/user'), config = require('./main'), JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; //exported to be used by passport in server set up module.exports = function (passport) { const jwtOptions = { // Telling Passport to check authorization headers for JWT jwtFromRequest: ExtractJwt.fromAuthHeader(), // Telling Passport where […]

将节点js中的JWT从后端传递到前端

我如何将JWT的价值从我的节点js后端传递给android / ios前端? 是否应该在我的mongoDB数据库中得到每次被前端拾取?

在哪里存储JWT撤销信息,mongoDB或Redis?

目前正在使用JWT实现MEAN堆栈用户注册/login系统,而不是使用所有身份validation的会话。 为了能够撤销JWT,我需要将一些JWT信息存储为令牌黑名单的一部分。 我最初的想法是使用MongoDB存储列入黑名单的令牌,但Redis是否也适合? 我在这种情况下犹豫避免Redis的原因是,如果服务器崩溃/重新启动,那么令牌黑名单将丢失,而对于MongoDB,黑名单将保持不变/持续。 任何意见,将不胜感激。 谢谢。

保护我的HTTP连接

我目前正在做一个家庭自动化项目。 以下是我的设置。 ESP8266 WiFi模块将连接到各种传感器。 轻型networking服务器将在模块上运行。 将部署一个Linode Cloud,运行某些NodeJS脚本和MongoDB数据库。 移动应用程序(客户端)将向云发送请求以控制和监视各种传感器。 我将使用JSON Web Tokens保护应用程序和云之间的连接。 另外我会尝试使用HTTPS来确保这个连接。 我很困惑如何保护云服务器和ESP8266模块之间的通信。 我做了很多研究。 知道某些概念,但不能得到一个清晰完整的画面。 有人请指导我。 谢谢。

如何在我的所有请求查询string中包含JSON webtoken

我刚刚学会了如何使用JSON webtoken。 我已经能够在login时生成JSON webtoken,并且还设置了中间件来validation我的令牌并保护JSONvalidation中间件以下的路由。 每次我尝试访问受保护的路由时,都会手动添加令牌: ?token=gwt3r7r….到我的GET请求的末尾。 我知道这不应该是一个真正的应用程序的情况。 我希望这是dynamic完成的。 这如何dynamic地完成?

ExpressJS +智威汤逊 什么是validation数据的正确方法?

我们来看一个例子。 我会跳过一些部分,如import,出口。 我有一个名为controllers / book.js的控制器有一个路由: router.get('/my-books', function(req, res) { if(Auth.authenticated(req,res)) { Book.getMyBooks(function(rows) { response.operationSucceed(req, res, rows); }); } }); 然后,在一个名为models / book.js的模型中,我有这个function: function getMyBooks(successCallback) { db.query('SELECT * FROM book b WHERE b.id_user=?', [Auth.getLoggedUID()], function(rows) { successCallback(rows); }); } 我的问题是关于Auth.getLoggedUID函数。 假设我有一个JWTauthentication,并假设我有一个在有效载荷中的UID(甚至可以接受?),检索它的最佳select是什么? 有没有,除了每次都需要传递每个需要身份validation数据的函数? 我可能有一个函数内部的函数执行,我是否需要通过这两个req来获取用户ID? 喜欢这个?: function getBooks(req) { getMyBooks(req); getCriminalBooks(req); getEvenOtherBooksByAuthor(req, authorId); } 老实说,我不喜欢那样。 也许我的整个概念是错误的,我应该做不同的事情? 有人能在这样的场景中指出正确的方向吗?