目前实现的功能有:
登录验证、session传值、拦截器、ajax传值等。项目虽不完善,但是web项目常见的功能都已经实现
项目下载地址:http://download.csdn.net/detail/liuwu0720/7044589
1、先看一下整个项目结构
访问:localhost:3000进入登录页面
随便输入用户名和密码提示错误
输入正确的用户名及密码后显示用户的昵称
直接访问localhost:3000/main提示未登录
2、本人开发环境如下:
win7 64位
mysql 5.6
node.js node.js v0.10.26
开发工具:webstorm 7
3、主要文件:app.js
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, ejs = require('ejs')
MySQlSessionStore = require("connect-mysql-session")(express);
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.engine('.html', ejs.__express);
app.set('view engine', 'html');// app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.cookieSession({secret : 'blog.fens.me'}));
app.use(express.session({
secret : 'blog.fens.me',
store: new MySQlSessionStore(),
cookie: { maxAge: 90000 } // expire session in 15 min or 900 seconds
}));
app.use(function(req, res, next){
res.locals.user = req.session.user;
var err = req.session.error;
delete req.session.error;
res.locals.message = '';
if (err) res.locals.message = '' + err + '';
var welcome="";
next();
});
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
//basic
//app.get('/', routes.index);
app.get('/', routes.login);
app.post('/', routes.doLogin);
app.get('/main', routes.main);
app.post("/checkuser",routes.check);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
login.html
Signin Template for Bootstrap
main.html
欢迎:<%- welcome %>
package.json
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.4.8",
"ejs": "*"
}
}
index.js(路由控制关键)
/*
* GET home page.
*/
exports.main = function(req, res){
console.log(req.session.user);
if(!req.session.user){
req.session.error='请先登录';
res.redirect('/');
}else{
res.render('main', { title: 'index' });
}
};
exports.login = function(req,res){
res.render("login",{title:'login'});
};
exports.doLogin = function(req, res){
var mysql = require('mysql');
var conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database:'nodejs',
port: 3306
});
conn.connect();
var user = req.body.username;
var pwd = req.body.password;
var selectSQL = "select * from t_user where name = '"+user+"' and password = '"+pwd+"'";
conn.query(selectSQL,function (err, data) {
if (err) console.log(err);
console.log("SELECT ==> "+data);
if(data==""||data==null){
req.session.error='用户名或密码不正确';
res.redirect('/');
}else{
req.session.user = data[0].name;
welcome = data[0].nickname;
//res.locals.welcomer=data[0].id;
res.redirect('/main');
}
});
conn.end();
};
exports.check = function(req,res){
// var queryObj = {userName: req.params.userName};
console.log(req.body.userName+"--------------------------");
}
其它相关js,css样式文件请下载源代码
项目下载地址:http://download.csdn.net/detail/liuwu0720/7044589