Tag: 基本authentication

使用JSON Web令牌和node.js / express保护URL的正确方法

我目前使用node.js授权用户使用JSON Web令牌,并使用EJS作为视图引擎进行expression。 在我的server.js文件中使用简单的中间件: app.use(function(request, response, next){ var token = request.body.token || request.query.token || request.headers['x-access-token']; console.log(request.body); if(token){ jwt.verify(token, app.get('superSecret'), function(err, decoded){ if(err){ response.json({"message": "Failed to authenticate user"}); } else{ request.decoded = decoded; next(); } }); } else{ return response.status(403).json({"message":"No token was provided"}); } }); 并保护下面的路线,例如: app.post('/userlist', function(request, response) { response.json({some: json}) }); 我无法理解或弄清楚如何保护GET路线,如: app.get('/userprofile', function(request, response) […]

设置passport-jwtauthentication

我用express API设置passport-jwt时遇到了一些麻烦。 在前端,我使用ember.js发送到/auth路由应validation会话的凭证,然后ember.js的库将处理在随后的请求中发送令牌。 我松散地遵循了这个教程 ,而是用passport-jwtreplace了他们的passport-http ,并在git回购中用例子来设置它。 在我的server.js我需要护照,并使用app.use(passport.initialize());将其设置为中间件app.use(passport.initialize()); 在server.js文件的底部,我用app.use('/api/v1', '/app/routes/api');调用我的apipath文件app.use('/api/v1', '/app/routes/api'); 我的app/routes/api.js文件看起来有添加和获取这样的用户部分 router.route('/users') .post(function(req,res) { user.addUser(req,res) }) .get(function(req,res) { user.getAllUsers(req,res) }); 哪些是在api/user.js文件中的导出引用,如下所示 var mongoose = require('mongoose'); var User = require('../../models/user'); module.exports.addUser = function(req, res) { var user = new User(req.body.user); user.save(function(err) { if (err) res.send(err); res.json({user: user}); }); }; module.exports.getAllUsers = function(req, res) { User.find(function(err, users) […]

SailsJS + PassportJS(sails-generate-auth) – 无法login用户

我目前在使用PassportJS在我的SailsJS应用程序中validation用户的问题。 根据本教程,我已经使用sails-generate-auth生成了所有需要进行身份validation的内容。 看起来像POST请求按照routes.js文件中的定义正确路由: 'post /auth/local': 'AuthController.callback', 'post /auth/local/:action': 'AuthController.callback', 在AuthController中我有以下代码: callback: function (req, res) { function tryAgain (err) { // Only certain error messages are returned via req.flash('error', someError) // because we shouldn't expose internal authorization errors to the user. // We do return a generic error and the original request body. var flashError = […]

一个好的npm模块散列和腌制用户login/ passwd?

在工作中,我们希望通过使用每个用户独特的盐来升级我们的节点应用程序authentication。 我们已经使用我们的手写密码validation护照和本地护照 ,将密码散列存储在数据库中,并用普通食盐进行腌制。 我想正确升级它。 我知道的第一个安全规则之一就是不要自己做 : https : //crackstation.net/hashing-security.htm 但是,我很难find一个体面的,可信的npm模块来处理这个问题。 用“salt”或“auth”searchnpm得到了这些模块: https://github.com/florianheinemann/password-hash-and-salt https://github.com/davidbanham/hashPass 他们的文档不清楚,他们在GitHub上只有不到10颗星。 有人可以指向我一个好的模块散列/腌制/检查我的密码?

如何使用身份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(); } […]

Mongo DB已更新,但是呈现了旧信息

我是新的使用MEAN堆栈,并试图实现用户服务。 我希望用户能够编辑他们的显示名称等信息。 用下面的代码,我可以在Mongo数据库中看到正在进行的更改,但是当我loggingreq.user时,我看到它正在显示未更新的版本,因此更新没有被呈现。 请帮忙! var router = require('express').Router(); router.route('/users/:user_id/changeName') // Update user's display name .post(function(req, res) { User.findByIdAndUpdate(req.params.user_id, { $set: { name: req.body.newName }}, function(err, user) { console.log(req.user); console.log(req.body.newName); res.render('profile.ejs', { user: req.user }); }); });

JWT微服务体系结构中的身份validation

题 问题如何在微服务应用程序中创build身份validation服务,并让其他服务检查该令牌(JWT)并检索用户? 可能的scheme 我目前的想法是基于身份validation服务在用户身份validation后将{ token, user }插入到Redis中。 所有其他服务都可以在Redis中检查用户的Authorization: Bearer kdI8$dj$nD&…标头令牌。 如果token存在于Redis中,则用户通过身份validation。 如果token在Redis中不存在,则用户不会被authentication。 用户将{ username, password }发送至授权服务 Auth服务对凭证进行身份validation并检索{ token, user } Auth服务将{ token, user }插入到Redis中 用户使用{ token }向Service-1发送请求 Service-1在Redis中为{ token }装饰,并检索{ token, user } Service-1做它的事情,并发回{ data } 这种方法有没有可能的安全,逻辑或架构问题?

MEAN堆栈 – 如何允许API访问权限只有login(电子邮件/密码和Facebooklogin)的用户

我已经在网上阅读了一整天,发现所有的解决scheme都是局部的而不是重点。 我有一个API写在节点和expression – (/ api / plans /)和(api / users /)。 目前,我已经能够实现一个简单的电子邮件和密码注册和loginfunction。 如果用户成功login,我在节点服务器上生成一个令牌并将其发回到Angular Front端。 但是我的API可以在没有任何身份validation的情况下访问,我想改变它。 我想限制只有我login的前端(Angular)用户的API访问。另外,为了让用户注册/login,除了给我一个简单的电子邮件和密码注册,我已经有了,我想给一个单点loginFacebook也是如此。 我正在考虑使用Passport-Facebook战略,这将给我的Facebook访问令牌,但我失去了如何将Facebook访问令牌与我现在生成的电子邮件/密码令牌集成,然后如何使用令牌来保护我的API端点只能login用户。 寻找build议,如何最好地去做。

Nodejs我需要使用Passport吗?

好的,所以我目前正在使用Node.js编写一个Web应用程序,而且我有点卡在如何处理用户login/身份validation。 许多教程似乎build议使用Passport来进行身份validation,但是从我读过的所有文档中,似乎需要一些设置,并且使我期待的简单login变得复杂。 如果使用Passport或不,我仍然计划在我的Mongo数据库中encryption我的用户密码。 所以问题是,我是否真的需要使用Passport出于安全的原因,或者我可以只编码一个authentication系统我自己?

通过未定义的POST API的身体价值?

我正在使用mongoose在MEAN堆栈上构build一个API。 该API应该处理用户注册和身份validation。 为了testing这个,我使用扩展名为chrome的邮递员向/signup提交post请求。 app.use("/signup", bodyParser.urlencoded({ extended: false })); app.post("/signup", Auth.userExist, function (req, res, next) { if (!req.body.email || !req.body.password) { res.json({success: false, msg: 'Please pass name and password.'}); console.log("email: " + req.body.email); console.log("password: " + req.body.password); } else { //do create new user logic… res.json({success: true, msg: 'Successful created new user.'}); } }); 在这里,您可以看到我在向API发送请求的正文中发送的内容: 在控制台中,我得到这个: […]