微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js http基本身份validation

是否有可能像在Apache中一样在Node.js中进行基本身份validation?

http://doc.norang.ca/apache-basic-auth.html

我知道,如果使用Express或Connect,我可以添加中间件function并进行用户validation,但是我试图限制整个区域(我不需要从一个数据库中仅对几个已定义的用户进行身份validation)我正在使用Ubuntu。

https://github.com/kaero/node-http-digest

如何在IIS中设置身份validation方法

Apache基本authentication是否防御暴力攻击?

如何通过使用Windowsauthentication的Web服务来避免使用Delphi HTTPRio调用的login对话框

如何覆盖Nginx中的全局auth_basic

匿名前的IIS Windows身份validation

这是我能做的事情,但我不确定在代码中“暴露”或直接写入用户密码是否足够安全。

非常感谢。

将apache2摘要authentication信息传递给mod_wsgi运行的wsgi脚本

不允许集成Windows身份validation*为其中一个域*

Nginx的basic_auth

Linux相当于WinCrypt API

apache:重写前的基本authentication

Passport提供了一个干净的机制来实现基本的身份验证。 我在我的Node.js Express应用程序中使用它来保护我的基于Angularjs的UI以及我的RESTful API。 要在您的应用程序中启动并运行护照,请执行以下操作:

npm安装护照

npm install passport-http(包含基本认证的“BasicStrategy”对象)

打开你的app.js并添加以下内容

var passport = require('passport') var BasicStrategy = require('passport-http').BasicStrategy passport.use(new BasicStrategy( function(username,password,done) { if (username.valueOf() === 'yourusername' && password.valueOf() === 'yourpassword') return done(null,true); else return done(null,false); } )); // Express-specific configuration section // *IMPORTANT* // Note the order of WHERE passport is initialized // in the configure section--it will throw an error // if app.use(passport.initialize()) is called after // app.use(app.router) app.configure(function(){ app.use(express.cookieParser()); app.use(express.session({secret:'123abc',key:'express.sid'})); app.set('views',__dirname + '/views'); app.set('view engine','jade'); app.set('view options',{ layout: false }); app.use(express.bodyParser()); app.use(express.methodoverride()); app.use(express.static(__dirname + '/public')); app.use(passport.initialize()); app.use(app.router); app.use(logger); }); // Routes app.get('/',passport.authenticate('basic',{ session: false }),routes.index); app.get('/partials/:name',routes.partials); // JSON API app.get('/api/posts',api.posts); app.get('/api/post/:id',api.post) // --Repeat for every API call you want to protect with basic auth-- app.get('*',routes.index);

把这个

app.use(express.basicAuth(function(user,pass) { return user === 'test' && pass === 'test'; }));

在行前

app.use(app.router);

使用http basic auth保护所有路由

看看: node.js的用户认证库?

它不能100%回答你的问题 – 但也许有帮助。

我觉得不错的选择可能是http-auth模块

// Authentication module. var auth = require('http-auth'); var basic = auth.basic({ realm: "Simon Area.",file: __dirname + "/../data/users.htpasswd" // gevorg:gpass,Sarah:testpass ... }); // Application setup. var app = express(); app.use(auth.connect(basic)); // Setup route. app.get('/',function(req,res){ res.send("Hello from express - " + req.user + "!"); });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐