Tag: 基本authentication

为什么http-auth不能和express.static中间件一起工作?

我正在尝试使用http-auth模块来设置一个简单的身份validation 。 我已经创build了这个设置,但是不能正常工作。 提示用户/密码的对话框显示出来,但如果closures对话框,应用程序将继续工作,也就是说,validation似乎不起作用。 似乎这是行不通的,因为我试图设置这个http-auth工作在我的静态文件夹www 。 我的app.js是基于这个 。 这是我的设置: 'use strict'; var express = require('express'); var app = express(); var auth = require('http-auth'); app.use(express.static('www')); var basic = auth.basic({ realm: 'SUPER SECRET STUFF' }, function(username, password, callback) { callback(username == 'username' && password == 'password'); }); app.use("/", auth.connect(basic)); app.set('port', (process.env.PORT || 4000)); app.listen(app.get('port'), function() { console.log('Node […]

在Node.js Web-Server中确定用户angular色并授予API访问权限的正确方法是什么?

我在Node.js-express中有一个带有REST API的Web服务器。 我有不同的API暴露,我使用OAuthauthentication用户。 一旦我确定用户我检索他的angular色,并决定授予一个API的权限。 问题是我所有的API都重复了代码,他们都必须检查angular色并确定权限。 有没有更好的方法来做到这一点? 我应该看ACL吗? 一般来说,我是Web服务的新手,可能不知道最好的解决scheme。 谢谢。 示例代码: var accessCallback = function (err, user) { if(err == null) { var userRole = getUserRole (user.role_id); if(userRole == ROLE.SUPERVISOR || userRole == ROLE.MANAGER || userRole == ROLE.EMPLOYEE){ doStuff(); //business logic } else { response.status(400).send (error.UserAccessDeniedError()); } } else { response.status(500).send(error.DatabaseError(err)); } }; access.determineUser (req.body.tokenID, accessCallback);

NodeJS / Firebase承诺的范围

我正在尝试开发连接到Firebase的NodeJS应用程序。 我可以连接成功,但我无法想象如何在then调用pipe理范围。 我正在使用NodeJS 6.9.2 我的testing实现如下所示: const EventEmitter = require('events'); const fb = require('firebase') class FireGateway extends EventEmitter { constructor() { super(); if ( this.instance ) { return this.instance; } // INIT var fbConfig = { apiKey: "xxxxx", authDomain: "xxxxx.firebaseapp.com", databaseURL: "https://xxxxx.firebaseio.com/" }; fb.initializeApp(fbConfig) this.instance = this; this.testvar = "aaa"; } login() { fb.auth().signInWithEmailAndPassword ("email", "pwd") […]

如何在nodejs中获取头文件请求

目前正在开发elasticsearch API应用程序,我需要从服务器端的AJAX调用中获取头文件请求。 下面给出了Ajax请求。 $.ajax({ url: 'http://localhost:3002/api/v1/getAutoSuggest/'+elasticsearchIndex+'/'+elasticsearchType, dataType: 'JSONP', type: 'GET', beforeSend: function(xhr){xhr.setRequestHeader('access-control-request-headers', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9');}, success: function (data) { } }); 在nodejs中,我试图通过使用req.headers ['x-access-token']得到它,但是无法得到它。 var checkToken = app.use(function(req, res, next) { var token = req.param.token || req.headers['x-access-token']; if (token) { jwt.verify(token, config.secret, function(err, decoded) { if (err) { return res.json({ success: false, message: 'Failed to authenticate token.' }); […]

PassportJS events.js:160 //未处理的错误连接超时

我创build了一个MEAN Stack应用程序,最近我join了passportjs,起初当我的Mongo数据库是1GB(它有超过300万个条目)时,一切正常,但是最近数据库增长到了2GB,当护照被称为1 / 3次它在控制台上抛出这个错误: (calling passport) POST /login 200 3600.661 ms – 492 // successful login GET /uploads/defaultm4.jpg 304 1.295 ms – – (calling passport) POST /login 200 3334.007 ms – 492 // successful login (calling passport) events.js:160 throw er; // Unhandled 'error' event ^ Error: connection timeout at Db.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules\m ongoose\lib\drivers\node-mongodb-native\connection.js:169:17) at emitTwo (events.js:106:13) […]

刷新Firebase令牌

我正在使用networkingfirebase JavaScript通过电子邮件和密码进行身份validation。 这个过程生成一个令牌,我使用firebase-admin在我的nodejs后端validation。 一旦生成该令牌,我将其存储在浏览器本地/会话存储上。 前端是AngularJs,我拦截http请求来注入存储在浏览器中的令牌。 这工作正常,但过了一段时间,此令牌过期。 那么在发送给nodejs api之前刷新这个令牌的最好方法是什么? 注意:我应该请求currentUser.getToken()每个请求吗?

PassportJsauthentication无限循环和执行(默认)查询

我正在尝试使用PassportJs和Sequelize构build身份validation系统。 我自己使用Sequelize制作了注册系统。 我只想使用PassportJS进行login。 它不会将我redirect到failureRedirect路由,对于SuccessRedirect也不会redirect,但是当提交表单时,它会进入无限循环,并在我的控制台中显示以下消息: Executing (default): SELECT `id`, `username`, `lastName`, `password`, `email`, `phone`, `createdAt`, `updatedAt` FROM `user` AS `user` LIMIT 1; 我的项目的结构是:users_model.js,index.js和users.js(控制器)。 我在我的index.js中的代码如下所示: //===============Modules============================= var express = require('express'); var bodyParser = require('body-parser'); var session = require('express-session'); var authentication= require('sequelize-authentication'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var passportlocal= require('passport-local'); var passportsession= require('passport-session'); var User […]

在node.js中授权

编码一个新闻网站,我试图进行授权,只有作者(谁发布文章)能够编辑和删除它们(这些button出现在页面的底部,并为所有的用户可见)。 但是,有一些新闻/网站没有login/注册选项。 例如: http : //www.denofgeek.com/us 。 因为他们没有authentication,这是否意味着他们没有授权? 如果作者的设置与其他用户相同,他们如何编辑/删除文章? 码: app.get("/blog/:id/:title/edit", function(req,res) { Blog.findById(req.params.id, function(err, foundBlog) { if(err) { res.redirect("/blog"); } else { res.render("editBlog", {blog : foundBlog}); } }) }) //UPDATE BLOG app.put("/blog/:id/:title", function(req,res) { req.body.blog.body = req.sanitize(req.body.blog.body); Blog.findByIdAndUpdate(req.params.id, req.body.blog,{new: true}, function(err,updatedBlog) { if(err) { res.redirect("/blog"); } else { res.redirect("/blog/" + req.params.id + "/" + […]

Node.js module.exports护照已authentication到路由

我想分开文件中的每一组路线。 我需要在大多数路由中使用isAuthenticated来限制访问。 当我把所有的路线放在同一个文件中, 当我在auth.js和order.js中使用module.exports = isAuthenticated ,我使用var auth = require('auth.js'); 当我进入http:// localhost:3000 /命令时,我会得到'isAuthenticated is not defined'的错误,在auth.js中定义的路由只是按预期工作。 我正在使用Express.js中间件“护照本地策略”(接下来来自tutsplus的教程和从这里下载的github库)。 我的项目结构: bin/www models/auth/init.js models/auth/user.js models/auth/signup.js models/auth/login.js models/order.js views/error.pug views/index.pug views/home.pug views/layout.pug views/order.pug views/register.pug routes/order.js routes/auth.js public/stylesheets/style.css app.js db.js ./routes/auth.js: var express = require('express'); var router = express.Router(); var isAuthenticated = function (req, res, next) { // if user […]

Passport.js本地策略不带mongoose

我试图find有关节点应用程序的最简单的login与护照资源。 我的意思是,使用: 中间件: app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); app.use(express.static('public')); 护照: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { done({ id: id, nickname: "test"}) }); passport.use(new LocalStrategy( function(username, password, done) { console.log("test"); if (username === 'username') { return done(null, { name: "test", id: '1234'}); } […]