Everyauth和Passport.js似乎有非常相似的功能集.两者之间的一些积极和消极的比较是什么让我想要使用一个而不是另一个?
我使用的是node.js + express.js + everyauth.js.我已将所有的Everyauth逻辑移动到模块文件中
var login = require('./lib/everyauthLogin');
Run Code Online (Sandbox Code Playgroud)
在这里我加载我的oAuth配置文件与密钥/秘密组合:
var conf = require('./conf');
.....
twitter: {
consumerKey: 'ABC',
consumerSecret: '123'
}
Run Code Online (Sandbox Code Playgroud)
这些代码对于不同的环境是不同的 - 开发/登台/生产,因为回调是针对不同的URL.
曲.如何在环境配置中设置这些以过滤所有模块,还是可以将路径直接传递到模块中?
在env中设置:
app.configure('development', function(){
app.set('configPath', './confLocal');
});
app.configure('production', function(){
app.set('configPath', './confProduction');
});
var conf = require(app.get('configPath'));
Run Code Online (Sandbox Code Playgroud)
通过
app.configure('production', function(){
var login = require('./lib/everyauthLogin', {configPath: './confProduction'});
});
Run Code Online (Sandbox Code Playgroud)
?希望有道理
我不明白每个人的承诺是什么.
我看到我需要返回一个promise对象或用户,但是什么是Everyauth承诺?
我是nodejs,everyauth等的新手.我对每一个人都有一些麻烦.在我看来,如果我访问everyauth对象,我会收到错误'everyauth is not defined'.然而,oauth流本身对每个人来说都很好.这是细节,
入口点 - app.js
var express = require('express');
var everyauth = require('everyauth');
everyauth.debug = true;
var app = express();
everyauth['37signals']
.appId('e6e76726501abf1b5627fe854b384ef8d62d7a55')
.appSecret('7c6891f46cb19aaf1831785968630ed4a1b3c342')
.findOrCreateUser( function (sess, accessToken, accessSecret, _37signalsUser) {
//code to handle find or create
}
.redirectPath('/');
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.cookieParser());
app.use(express.session({ secret: 'foobar' }));
app.use(express.bodyParser());
app.use(everyauth.middleware());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
everyauth.helpExpress(app);
});
app.configure('development', function(){
console.log('inside development configure');
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.get('/', function …Run Code Online (Sandbox Code Playgroud) 我用服务器端验证express.session.通信客户端会话信息的正常方式是使用新生成的HTML服务器端重新呈现页面,但这需要重新加载.
我有一个单页应用程序,并希望避免重新加载.有没有办法访问有关连接用户客户端的信息?这些信息是否存储在cookie中?如何在不重新加载页面或发出额外服务器请求的情况下访问它?
我的配置:
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
secret: 'MY SECRET',
store: new MongoStore({
db: 'MY SESSION DB',
host: 'localhost',
port:88888
})
}));
app.use(everyauth.middleware());
app.use(express.methodOverride());
app.use(app.router);
});
app.configure('dev', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
appPort = config.port; //Setting PORT to 8888 in dev mode.
app.use('/public', express.static(__dirname + '/public'));
});
app.configure('production', function(){
app.use(express.errorHandler());
appPort = config.port;
//Set cache-header-expires to 1 day
var oneDay = 86400000;
//app.use('/public', express.static(__dirname + '/public'));
app.use('/public',express.static(__dirname + '/public', { maxAge: oneDay })); …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在MongoDb中存储会话.
我尝试过express-session-mongo和connect-mongodb,当我尝试加载登录页面时,两者都给了我相同的"500内部服务器错误".这让我想到可能在某处与mongoose-auth发生冲突.
无论如何这里是我的设置:
app.js:
var MongoStore = require('connect-mongodb');
var MongoDb = require('mongodb').Db;
var Server = require('mongodb').Server;
var db = new MongoDb('myDb', new Server('localhost', 27017, {auto_reconnect: true, native_parser: false}));
app.configure(function() {
app.use(express.logger({format: 'dev'}));
app.set('views', __dirname + '/../views');
app.set('view engine', 'jade');
app.set('view options', { layout: false });
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(mongooseAuth.middleware());
app.use(require('./mysite').middleware());
app.use(express.methodOverride());
});
app.configure('production', function(){
var oneWeek = 657450000;
app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));
app.use(express.session({ store: new MongoStore({db: db}), secret: 'super secret' }));
app.use(express.errorHandler());
});
// Routes
require('./routing.js');
mongooseAuth.helpExpress(app);
app.listen(3000); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用everyauth来处理用restify创建的rest api的身份验证.但找不到起点.我希望做的事情如下:
var restify = require('restify');
var everyauth = require('everyauth');
var server = restify.createServer();
server.use(everyauth.middleware());
Run Code Online (Sandbox Code Playgroud)
但是,restify不接受everyauth中间件.
我如何设置解决方案和每个人?
我正在尝试为我的节点应用程序设置 everyauth。尽管我已经达到了我不知道如何完成的一步。
它要求设置local.host为 的别名localhost,但它引用了一些 linux 文件夹,我使用的是 windows。
这是我所困惑的确切说明。
重要提示 - 某些 OAuth 提供程序不允许回调到 localhost,因此您需要创建一个名为 local.host 的 localhost 别名。确保设置 /etc/hosts,以便 127.0.0.1 也与“local.host”关联。因此,在 /etc/hosts 文件中,其中一行将如下所示:“127.0.0.1 localhost local.host”
在 Windows 上如何实现这一点?