Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

关于req.session.user无法赋值、跳转等问题

$
0
0

新人一枚,在做Express+nodejs博客时 涉及状态栏转换。代码如下: header.ejs______________________________________ <nav> <span><a title=“主页” href="/">HOME</a></span> ** <% if(user){ %>//===========>第一个问题:无法实现切换状态栏 <span><a title=“登出” href="/logout">LOGOUT</a></span> <span><a title=“发表” href="/post">POST</a></span> ** <% } else { %><span><a title=“登录” href="/login">LOGIN</a></span> <span><a title=“注册” href="/reg">REGISTER</a></span> ** <% } %>** </nav> <article> ** <% if(success){ %>** ** <div><%= success %></div>** ** <% } %>** ** <% if(error){ %>** ** <div><%= error %></div> <% } %>** index.js(路由文件)——————————————————————————只贴部分。 router.get(’/’, function (req, res) { res.render(‘index’, { title:‘主页’, ** user: req.session.user, success: req.flash(‘success’).toString(), error: req.flash(‘error’).toString()** }); }); router.get(’/reg’, function (req, res) { res.render(‘reg’, { title: ‘注册’, user: req.session.user, success: req.flash(‘success’).toString(), error: req.flash(‘error’).toString() }); }); router.post(’/reg’, function (req, res) { var name = req.body.name; var password = req.body.password; var email = req.body.email; var password_re = req.body[‘password-repeat’]; if (password != password_re) { req.flash(‘error’, ‘两次输出不一样!!’); return res.redirect(’/reg’); } //生成密码 m5 zhi const md5 = crypto.createHash(‘md5’); var password = md5.update(req.body.password).digest(‘hex’); var newUser = new User({ name: req.body.name, password: password, email: req.body.email }); console.log(newUser); User.get(newUser.name, function (err, user) { if (err) { req.flash(‘error’, ‘打开失败’); returnres.redirect(’/’); } if (user) { req.flash(‘error’, ‘已存在’); return res.redirect(’/reg’); } newUser.save(function (err, user) { if (err) { req.flash(‘error’, err); return res.redirect(’/reg’); } req.session.user = user; console.log(req.session.user); req.flash(‘success’, ‘注册成功!!’); res.redirect(’/’); }); }); }); router.get(’/login’, function (req, res) {//==========>第二个问题:经过添加“状态栏切换功能” //================》登陆页乱码:

  • esc is not a function

  • TypeError: E:\blog\views\login.ejs:1

  • 1| <%- include header %>

  • 2| <form method="post">
    
  • 3|      用户名:<input type="text" name="name"/>
    
  • 4|      placeholder="请输入用户名"/><br/>
    

    res.render(‘login’, { title: ‘登录’ }); }); router.post(’/login’, function (req, res) { var md5=crypto.createHash(‘md5’), password=md5.update(req.body.password).digest(‘hex’); //检查用户是否存在 User.get(req.body.name,function(err,user){ if(!user){ req.flash(‘error’,’!’);

    return res.redirect('login');//用户不存在
    

    } if (user.password!=password){

    req.flash('error','!!');
    return res.redirect('/login');//密码不一样
    

    }

    //用户信息存入session req.session.user=user;//=======>(仍旧是第一个问题)这个无法实现,跑出来为undefined。 req.flash(‘success’,’!’);

    res.redirect(’/’);//

    });

}); router.get(’/post’, function (req, res) {

res.render('post', { title: '发表' });

}); router.post(’/post’, function (req, res) {

}); router.get(’/logout’, function (req, res) {

req.session.user=null;
req.flash('success','!!');
res.redirect('/');

}); module.exports = router; app.js_____________________________________________________________ var index = require(’./routes/index’); app.use(session({ resave:false, saveUninitialized: true, secret: settings.cookieSecret, key: settings.db,//cookie name cookie: { maxAge: 1000 * 60 * 60 * 24 * 30 },//30days store: new MongoStore({ url: ‘mongodb://localhost/db’

})

})); app.use(flash()); 粗体为后添加“状态栏切换功能”code


Viewing all articles
Browse latest Browse all 14821

Trending Articles