【问题标题】:how to create different session on url based in nodejs?如何在基于nodejs的url上创建不同的会话?
【发布时间】:2015-03-10 06:38:29
【问题描述】:

我们的网站有两个部分:

1. admin (content management)  
2. site

管理部分的 URL 为“/admin”,站点部分的 URL 为“/”。

示例:我的站点名称是 www.example.com,然后管理部分 url 是“www.example.com/admin”,站点 url 是“www.example.com”。

我想创建基于 url 的会话意味着来自管理部分的请求将与来自站点部分的请求具有不同的会话。

我该怎么做?

【问题讨论】:

    标签: node.js session session-cookies passport.js


    【解决方案1】:

    假设您使用的是 express,您可以为您的路由分离路由器并将会话中间件应用到每个路由器。

    routes/index.js

    var express = require('express'),
        router = express.Router(),
        session = require('express-session');
    
    router.use(session({
        secret: 'index route secret',
        resave: false,
        saveUninitialized: true
    }));
    
    module.exports = router;
    

    routes/admin.js

    var express = require('express'),
        router = express.Router(),
        session = require('express-session');
    
    router.use(session({
        secret: 'admin route secret',
        resave: false,
        saveUninitialized: true
    }));
    
    module.exports = router;
    

    app.js

    var express = require('express'),
        app = express();
    
    app.use('/', require('./routes/index'));
    app.use('/admin', require('./routes/admin'));
    
    app.listen(3000);
    

    documentation

    【讨论】:

    • 我知道将路由器添加到应用程序的顺序很重要,但我不明白为什么? :( 我想做的是让一些路由生成会话,而另一些路由则完全打开而根本没有会话。根据我添加不同路由的顺序,这是可行的,但我不明白为什么。
    • @jgato 因为路由器被添加到“堆栈”中。当发出请求时,它会遍历堆栈以找到与路由匹配的对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2012-08-21
    • 2016-05-21
    • 2011-04-02
    相关资源
    最近更新 更多