Tag: jwt

保存并从本地存储获取快速js令牌

即时通讯使用与Express.js的节点,并尝试使用JWT进行身份validation,用户login后生成一个令牌,并将其保存到本地存储,但我不知道如何获取身份validation的令牌。 这是即时通讯使用的代码: login视图: $.ajax({ type: 'POST', url: base_url + "login", data: postData, dataType: 'json', success: function(data){ // console.log(data1); // alert(data); _(data); if(data.success === false){ showError(data.msg); }else{ showError(data.msg); window.localStorage.setItem("authToken", data.token); var token = window.localStorage.getItem('authToken'); if (token) { $.ajaxSetup({ headers: { 'x-access-token': token } }); } } } }); 这是在访问任何路由之前使用检查的路由validation: router.use(function(req, res, next){ var token = req.headers['x-access-token']; […]

NodeJS:在客户端存储JWT的地方? sessionStorage,localStorage还是cookies?

使用NodeJS和(例如)AngularJS在SPA上存储用于身份validation的JSON Web令牌的最佳位置是什么? 我到目前为止: 可能的地方: HTML5 Web存储(localStorage / sessionStorage) cookies Web存储(localStorage / sessionStorage)可以通过JavaScript访问同一个域。 这意味着您网站上运行的任何JavaScript都将有权访问Web存储,因此可能容易受到跨站点脚本(XSS)攻击的影响。 localStorage具有不同的到期时间, sessionStorage只能在创build它的窗口打开时访问。 localStorage会一直持续到您删除它或用户删除它。 Cookie与HttpOnly Cookie标志一起使用时,不能通过JavaScript访问,并且对XSS不起作用。 但是,Cookie容易受到跨站请求伪造(CSRF)的影响。 那么存储智威汤逊的最安全的方法是什么?

如何login后连接到套接字 – 智威汤逊

我正在使用socketio-jwt来validation套接字。 在服务器上: socketio.use(require('socketio-jwt').authorize({ secret: config.secrets.session, handshake: true })); 在客户端: var ioSocket = io('', { query: 'token=' + Auth.getToken(), path: '/socket.io-client' }); 我的问题是,如果一个客户端连接到服务器,authentication失败,并没有build立与套接字的连接。 现在,如果用户login到系统中,与套接字的连接仍未build立。 我试图实现的是,如果用户login到系统,连接就build立起来了。 我到目前为止唯一的想法是重新加载页面,像$window.location.href = '/'; login后。 但似乎不是正确的方法。 另一个select是保持套接字试图(重新)连接超时。 但它是一个不好的select,因为我的应用程序允许用户没有login。 如何正确触发套接字连接?

如何使用Auth0 Lock来pipe理后端用户?

我正在用React创build一个前端,用Node创build一个后端。 我想用Auth0 Lock来pipe理用户信息 – 发送一个包含每个请求的JWT给API。 如果我需要做以下的事情之一呢? 存储一个带有作者ID的博客文章 Auth0唯一标识符是user_id ,它不是一个整数,因此不能用作ID /密钥。 我将如何处理这在服务器端用户商店? 有一个用户表来存储“个人资料”或其他类似的信息 是否在每个API请求上阅读JWT,确定该用户是否存在,然后创build一个新用户(如果不存在),或者将其与预先存在的用户关联(如果存在)。 是否高效地检查每个API请求上的用户数据库? 我不确定如何使用基于JWT的API和Auth0处理一般stream程。 编辑: 经过一番研究和思考,我的想法是:Auth0的唯一用户标识符是由它们提供的user_id 。 这里的问题是它不是一个整数。 因此它不应该被用作数据库中users表的键。 看起来好像你不应该检查每个请求上的用户数据库,但这可能是不正确的。 一个想法是在初始login时回拨到后端,如果该账户不存在,创build它,如果该账户存在,继续前进。 然后,只要用户在前端login之后,信任Auth0 JWT(如果它在后端validation),就会在每个后续请求中相信。 从我在网上看到的这个过程的很less的描述,似乎我描述的是正常的方式。 但是在某些情况下,这是没有意义的。 如果用户被禁止呢? 他们仍然可以使用主动JWT访问服务器function,直到时间到期。 因此,如果在每个API请求上检查用户存储是正常/高效,那么如何将Auth0的stringid( user_id与数据存储中的整数ID相关联来执行查询? 我正在使用一个SQL变体。

NodeJs – 从JWT令牌检索用户信息?

节点和angular度。 我有一个MEAN堆栈身份validation应用程序,我正在设置成功loginJWT令牌如下,并将其存储在控制器中的会话中。 通过服务拦截器将JWT令牌分配给config.headers: var token = jwt.sign({id: user._id}, secret.secretToken, { expiresIn: tokenManager.TOKEN_EXPIRATION_SEC }); return res.json({token:token}); authservice.js拦截器(省略了requestError,response和responseError): authServices.factory('TokenInterceptor', ['$q', '$window', '$location','AuthenticationService',function ($q, $window, $location, AuthenticationService) { return { request: function (config) { config.headers = config.headers || {}; if ($window.sessionStorage.token) { config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; } return config; } }; }]); 现在我想从令牌获取login的用户详细信息,我该怎么做? 我尝试如下,不工作。 当我从Users.js文件logging错误,它说“ReferenceError:标题未定义” authController.js: […]

混合passport-facebook和passport-jwt的最佳方法是什么?

我对Node.js的开发很陌生,目前正忙于在空闲时间开发一个宠物项目。 到目前为止,我已经使用passport和passport-jwt为策略创build了JWT身份validation,并将其用于所有RESTful API。 现在我正在考虑将这个与某种Facebook身份validation混合在一起,仍然想要使用令牌身份validation。 目前这是我如何产生和获得令牌: exports.authenticate = function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) return res.status(400).send(getErrorMessage(err)); if (!user) { res.status(400).send({ success: false, message: 'Authentication failed. User not found.' }); } else { if (user.checkPassword(req.body.password)) { let token = jwt.encode(user, config.secretPhrase); res.json({ success: true, token: 'JWT ' + token }); } […]

Auth0 – 用户信息丰富数据

我需要我的API来返回包含一些用户信息的对象。 例如: api/comment/123需要返回: { id: 123, author: { id: 'googleblahblah|123456789', name: 'James Bond' } } 通常我只是join用户和评论表,但在这种情况下,我不能。 我的应用程序的数据库存储用户ID,但名称(和其他用户的东西)存储在Auth0中。 很明显,对Auth0进行API调用以在每个API调用上“丰富”对象是不合理的。 我是否caching我的应用程序服务器上的所有/一些用户信息? API结果中只有用户标识,让客户端丰富数据? 人们如何处理这个问题?

有或没有令牌JWT + PASSPORT的路线可用

我希望我可以使用或不使用令牌来访问路由器。 如果用户有一个令牌,比给我req.user 喜欢这个: router.get('/profile', function(req, res) { if(req.user) { // or if (req.isAuthenticated()) res.send('logged') } else { res.send('not loggedIn') } }); 我的应用: var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; var opts = {} opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); opts.secretOrKey = 'sh'; passport.use(new JwtStrategy(opts, function(jwt_payload, done) { User.findOne({id: jwt_payload.sub}, function(err, user) { if (err) { return done(err, false); […]

在初始连接的授权标头中将JWT传递给Node.js WebSocket

我正在build立一个Node.js服务器来与我的Web应用程序的WebSockets进行通信。 我打算使用JSON Web令牌来限制只有已经通过webappauthentication的用户才能访问。 在研究的过程中,我无法findNode.js的WebSocket包,它支持客户端设置Authorization头并在初始连接调用中使用它。 我经常看到build议通过查询parameter passing令牌,这可能不如通过Authorization标头传递令牌安全。 我错过了什么吗? 是否有良好的,维护良好的WebSocket库允许设置Authorization头客户端,以便我可以防止不必要的连接到服务器?

无法正确设置JWT的Exp和Iat

我有点被这一个难住。 我正在尝试build立一个有效的JWT。 我正在使用jsonwebtoken中间件的node.js。 我已经遵循了回购协议( 位于这里 )的文件,但我一直得到错误的Exp和Iat。 显然我想这样做是正确的,所以我不允许已经过期的智威汤逊。 作为一个testing,我有以下代码: var token = jwt.sign({"id": user._id}, configGeneral.JWT, { expiresIn: '1h' }); var decoded = jwt.decode(token, configGeneral.JWT); var d1 = new Date(decoded.exp); var d2 = new Date(decoded.iat); console.log(decoded); console.log(d1); console.log(d2); 这个的输出是: { id: '56253091fe0397c80133f3e4', iat: 1445714161, exp: 1445717761 } Sat Jan 17 1970 19:35:17 GMT+0200 (South Africa Standard Time) […]