小编Arn*_*uin的帖子

Node.js + express.js + passport.js:在服务器重启之间保持身份验证

我使用passport.js来处理我的nodejs + express.js应用程序上的auth.我设置了一个LocalStrategy来从mongodb获取用户

我的问题是,当我重新启动节点服务器时,用户必须重新进行身份验证.这是一个问题,因为我正在积极开发它,并且不要在每次重启时都登录...(+我使用节点主管)

这是我的应用设置:

app.configure(function(){
    app.use('/static', express.static(__dirname + '/static'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({secret:'something'}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(app.router);
});
Run Code Online (Sandbox Code Playgroud)

会话序列化设置:

passport.serializeUser(function(user, done) {
    done(null, user.email);
});

passport.deserializeUser(function(email, done) {
    User.findOne({email:email}, function(err, user) {
        done(err, user);
    });
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用connect-mongodb在博客上给出的解决方案(删除链接,因为它不再存在),但没有成功

app.use(express.session({
    secret:'something else',
    cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
        store: MongoDBStore({
        db: mongoose.connection.db
    })
}));
Run Code Online (Sandbox Code Playgroud)

编辑附加问题:只应该建立一个连接(使用一个连接有限的mongohq免费服务)

编辑2解决方案(作为一个版本,因为我的声誉很低,现在回答我的问题

这是我最终找到的解决方案,使用mongoose启动的连接

app.use(express.session({
    secret:'awesome unicorns',
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(
        {db:mongoose.connection.db},
        function(err){ …
Run Code Online (Sandbox Code Playgroud)

node.js express

70
推荐指数
3
解决办法
4万
查看次数

客户端+服务器端模板,对我来说感觉不对,如何优化?

在我正在制作的Web应用程序中,我使用经典的Express + Jade来呈现客户端页面,并且还公开了一些REST API(比方说:"用户列表API").

这些客户端页面使用提供的API来检索"用户列表"并显示它.要显示它,我会在检索数据后使用把手模板库.

对我来说似乎有点脏,使用两个模板引擎,解析代码两次,如何使它更好?

注意:我已经通过插入脚本变量在客户端页面中发送初始数据来优化事物.然后,该变量的显示方式与API接收的数据的显示方式相同.API仅在数据刷新时使用.

更新:使用jade服务器和客户端都是一个好主意,但如何分离/指定?渲染模板的哪一部分应该在提供页面时完成,客户端将使用哪个部分?

templating node.js express handlebars.js pug

6
推荐指数
1
解决办法
3237
查看次数

如何使用scons 2.3 visual express 2012构建c ++项目?

我尝试:

env = Environment(ENV = {'PATH' : os.environ['PATH'], \
            'INCLUDE' : 'c:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\include\\', \
            'LIB' : 'c:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\lib\\'})
Run Code Online (Sandbox Code Playgroud)

但它不起作用.错误信息:"cl"不是命令...

我在scons wiki中找到了描述(http://www.scons.org/wiki/PlatformSpecificNotes#Visual_C.2B-.2B-):如果使用Microsoft Visual C++,则需要设置'INCLUDE','LIB'和'PATH '在您的环境中,然后在创建'环境'对象时导入它们.这些将用于定位MSVC++工具并设置'CPPFLAGS'等.

我究竟做错了什么?

完整的sconstruct(它适用于ubuntu,以及带有mingw的windows):

import os
import sys

if ARGUMENTS.get('ndk', 0):
    current_dir = os.getcwd()#os.path.dirname(os.path.abspath(__file__))
    os.environ["NDK_PROJECT_PATH"] = current_dir + '/android-project'
    os.system("ndk-build") # use V=1 if can't compile for android
    exit(0)

if ARGUMENTS.get('ant', 0):
    current_dir = os.getcwd()#os.path.dirname(os.path.abspath(__file__))
    android_prj_path = current_dir + '/android-project'
    os.chdir(android_prj_path)
    os.system("ant debug") # use V=1 if can't …
Run Code Online (Sandbox Code Playgroud)

c++ scons visual-c++

5
推荐指数
1
解决办法
2516
查看次数

标签 统计

express ×2

node.js ×2

c++ ×1

handlebars.js ×1

pug ×1

scons ×1

templating ×1

visual-c++ ×1