我想在Nodejs中管理會話,就像用戶已經登錄一樣,將直接進入歡迎頁面。我使用了一個單獨的路由器模塊,我試圖訪問請求參數來管理會話。我已經搜索並使用訪問Nodejs中的請求參數
req.params
req.body
req.query
訪問UNAME參數在我的HTML文件。我得到的所有是undefined
我也嘗試了URL模塊,但沒有運氣。請儘量徹底,因爲我是Nodejs的初學者。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
<link rel="stylesheet" href="../CSS/style.css">
</head>
<script type="text/javascript">
function validate(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username == "[email protected]" && password == "admin123"){
return false;
}
else {
alert ("Login Failed");
}
}
</script>
<body>
<div class="container">
<div id="login-form">
<h3>Login</h3>
<fieldset>
<form >
<input type="email" id="username" name="uname">
<input type="password" id="password" >
<a href ="/welcome"> Welcome </a>
<input type="submit" value="Login" onclick="return (validate())" />
<footer class="clearfix">
<p><span class="info">?</span><a href="#">Forgot Password</a></p>
</footer>
</form>
</fieldset>
</div> <!-- end login-form -->
</div>
</body>
</html>
app.js
var express = require('express'),
app = express();
path = require('path')
cookieParser = require('cookie-parser')
session = require('express-session')
config = require('./config/config.js');
connectMongo = require('connect-mongo')(session)
mongoose = require('mongoose').connect(config.dbURL)
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('hogan-express'));
app.set('view engine', 'html');
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
var env = process.env.NODE_ENV || 'development';
if(env==='development'){
app.use(session({secret:config.sessionSecret, saveUninitialized:true, resave:true}));
} else {
app.use(session({
secret:config.sessionSecret,
store: new connectMongo({
//url:config.dbURL,
mongooseConnection:mongoose.connections[0],
stringify:true
}),
saveUninitialized:true,
resave:true
}))
}
/*
app.route('/').get(function(req, res, next){
//res.send('<h1>Hello World!</h1>');
res.render('login', {title:'Welcome to AIOCloud'});
})
OR
require('./routes/routes.js')(express, app, session);
*/
var userSchema = mongoose.Schema({
username:String,
password:String,
fullname:String
})
var person = mongoose.model('aiocloud', userSchema);
var john = new person({
username:'johndoe',
password:'john_wants_to_login',
fullname:'John Doe'
})
john.save(function(err){
console.log('Done !');
});
require('./routes/routes.js')(express, app);
app.listen(3000, function(){
console.log('AIOCloud Working on Port 3000');
console.log('Mode: ' + env);
})
routes.js
module.exports = function(express, app){
var router = express.Router();
var bodyParser = require('body-parser')
var ses;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
router.get('/', function(req, res, next){
res.render('login.html');
});
router.get('/login', function(req, res, next){
ses = req.session;
if(ses.uname)
res.redirect('/welcome');
else{
ses.uname = req.params.uname;
console.log(ses.uname);
res.redirect('/welcome');
}
});
router.get('/welcome', function(req, res, next){
if(ses.uname){
//console.log(ses.id);
res.render('welcome', {title:'Welcome'});
}
else
res.render('login.html');
});
router.get('/setcolor', function(req, res, next){
req.session.favColor = "Red";
res.send('Setting favourite color!');
});
router.get('/getcolor', function(req, res, next){
res.send('Favourite color is ' + (req.session.favColor===undefined?"Not Found":req.session.favColor))
});
app.use('/', router);
}
不介意我的問題,但是我的html文件有什麼問題,因爲我沒有看到任何請求參數像httt:// localhost:3000 /?uname = slsll – user101285
它只是http:// localhost:3000/ – user101285