node.js学习笔记(3)-node.js结合mysql数据库实现的web项目中常见功能--登录验证、session传值、拦截器、ajax传值等
来源:互联网 发布:php流量统计代码 编辑:程序博客网 时间:2024/05/05 03:41
目前实现的功能有:
登录验证、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 environmentsapp.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 = '<div class="alert alert-error">' + err + '</div>'; var welcome=""; next();});app.use(app.router);app.use(express.static(path.join(__dirname, 'public')));// development onlyif ('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
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <link rel="shortcut icon" href="images/favicon.ico"> <title>Signin Template for Bootstrap</title> <!-- Bootstrap core CSS --> <link href="stylesheets/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <script type="text/javascript" src="javascripts/jquery.js"></script> <script type="text/javascript" src="javascripts/bootstrap.min.js"></script> <style type="text/css"> body{ background-color: #00FF99; } </style></head><body><div class="container" style="width: 500px; height:500px;margin-top: 50px;background-color: #f5f5f5"> <form class="form-signin" role="form" method="post" > <fieldset> <legend>用户登陆</legend> <%- message %> <h2 class="form-signin-heading" id="message">Please sign in</h2> <input type="text" class="form-control" placeholder="输入用户名" required autofocus name="username" id="usename" onblur="checkuser()"><br/> <input type="password" class="form-control" placeholder="输入密码" required name="password"> <label class="checkbox"> <input type="checkbox" value="remember-me"> Remember me </label> <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button> </fieldset> </form></div> <!-- /container --><script type="text/javascript"> function checkuser(){ var userName = $("#usename").val(); $.ajax({ async:true, data:{userName:userName}, url:"/checkuser", dataType:"json", type:"post", success:function(data){ } }) };</script></body></html>
main.html
<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head><body><div align="center" style="position: relative; width: 1000px; height: 600px; margin: 0 auto; cursor: pointer;"> <h2>欢迎:<%- welcome %></h2></body></html>
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
0 0
- node.js学习笔记(3)-node.js结合mysql数据库实现的web项目中常见功能--登录验证、session传值、拦截器、ajax传值等
- node.js中结合redis实现session
- node.js 实现一个简单的登录拦截器
- node.js中结合redis实现session修改完善(2)
- Node.js项目学习笔记
- node.js+mysql学习笔记
- 利用Node.js实现模拟Session验证的登陆
- node.js学习笔记(3)--Express创建的项目分析
- node.js学习笔记(10)--mysql模块连接mysql数据库
- node.js---study2 连接池连接数据库实现登录注册查询用户的功能---
- node.js+mysql实现用户登陆验证
- Express + Node.js 实现拦截器
- Node.js学习笔记3
- Node.js学习笔记3
- 应用node.js+mongodb数据库实现一个mvc架构的web项目
- Node.JS学习笔记
- node.js学习笔记
- Node.js 学习笔记
- OpenGL中FBO的概念及其应用
- mysql内置函数
- 黑马程序员--老毕的“单例设计模式”
- Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)
- javascript复习笔记四---Global 对象属性
- node.js学习笔记(3)-node.js结合mysql数据库实现的web项目中常见功能--登录验证、session传值、拦截器、ajax传值等
- AFNetworking速成教程 (1)
- Intent与Intent Filter(下)
- 关于C++学习之书籍选择篇
- 非常第三方
- Linux运行qt出现错误:(qtdemo:3694): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
- 圆形已经成为贯穿iOS的新DNA
- 规范
- 初学者指针指南