繁体   English   中英

在节点中的不同文件之间使用Node Express会话

[英]Use Node Express session between different file in node

我将电子邮件保存在会话中的login.js中

router.get('/signin',function(req,res,next) {
   res.send(req.session.email);//here i can get email from session as well
   console.log("email inside ./signin in login.js "+req.session.email);
});

router.post('/login', function(req, res) {
    req.session.email=req.body.email; //get email from form body
    console.log(req.session.email); // here i can get my email in console 
    res.redirect('/')        //want to redirect to home
});

我想从index.js中的会话访问电子邮件

var session;
router.get('/', function(req, res, next) {
   session=req.session;
    console.log("your mail is"+session.email);
});

这是app.js配置

var

 express = require('express');
var app = express();
    var path = require('path');
    var connection=require('./models/connection');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');
    var session=require('express-session');
    var index = require('./routes/index');
    var users = require('./routes/users');
    var login=require('./routes/login');
    var debug = require("debug");
    var clc = require('cli-color');
    var router=express.Router();
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');
    app.use(favicon(path.join(__dirname, 'public/images/', 'favicon.gif')));
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(cookieParser("secretkey"));
    app.use(express.static(path.join(__dirname, 'public')));
    app.use('/assets', express.static(__dirname + '/assets'));
    app.use(session({secret: 'secretkey',saveUninitialized: true,resave: true}));
    app.get('/login',login);
    app.post('/login',login);
    app.get('/signin',login);
    app.get('/',index);
    module.exports = app;

在此处输入图片说明

想要这样的事情我们可以在php中做

<!-- first page -->
<?php
  session_start(); 
  $_SESSION['myvar'] = 'hello';
?>

<!-- second page -->
<?php
    session_start();
    echo $_SESSION['myvar']; // it will print hello
?>

我尝试了这些,还有更多答案,但是没有一个解决我的问题

NodeJS express-session req.session未定义

req.session在Node中未定义?

如何在其他JavaScript文件expressjs中使用req.session数据

因此,我尽可能地尝试了您的代码(从您的代码中复制和粘贴,添加了您不需要在此处发布的文件,例如,实际上开始在端口上侦听的server.js文件),只需进行一次更改即可按原样工作。

您的index.js文件实际上从未将任何内容发送回客户端。 注意您的代码:

var session;
router.get('/', function(req, res, next) {
   session=req.session;
    console.log("your mail is"+session.email);
});

没有调用res.send或res.render,因此它将挂起。 尽管它与会话值无关,但console.log语句仍会打印出以前发布的正确电子邮件值。

尝试:

var session;
router.get('/', function(req, res, next) {
   session=req.session;
    console.log("your mail is"+session.email);
   res.send(session.email);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM