TWaver HTML5 + Node.js + express + socket.io + redis(五)

接上一篇TWaver HTML5 + Node.js + express + socket.io + redis(四), 这一篇将讲解如何用模版生成html页面, 如何验证用户登录, 您将了解到:
1. 模版引擎jade
2. 使用express的session功能

一. 用jade生成登陆界面
用express就不得不了解一下模版引擎, 比较流行的是jadeejs, 这里以jade为例:
1. 安装jade:
npm install jade

2. 配置express使用jade

//设置express使用jade作为模版引擎
server.set('view engine', 'jade');
//设置jade模版的目录
server.set('views', __dirname + '/views');

3. 配置jade模版
在主程序目录创建views目录, 在views目录添加layout.jade文件(layout文件用于指定所有页面的模版), 内容如下:

!!! 5
html
  include header
  body!= body


再添加header.jade文件, 内容如下:

head
  title TWaver HTML5 Demo
  script(type='text/javascript', src='/socket.io/socket.io.js')
  script(type='text/javascript', src='/twaver.js')
  script(type='text/javascript', src='/demo.js')


 

4. 生成登陆界面和主界面
添加login.jade文件, 内容如下:

form(action='/login', method='post')
  label Name:
  input(name='name', type='text')
  input(name='password', type='password')
  input(type='submit', value='Login')


再添加index.jade文件, 内容如下:

body(οnlοad="init()")


5. 添加登录和主页路由:

//添加登录路由
server.get('/login', function (req, res) {
	res.render('login');
});
//添加主页路由
server.get('/', function (req, res) {
	res.render('index');
});


启动node, 用浏览器打开http://localhost:8080/login, 看看效果:

再打开http://localhost:8080/, 内容和上一章看到的一样, demo目录的demo.html可以删掉了:

二. 配置express, 验证用户
1. 启用session, 表单和cookie解析功能

//设置表单和cookie解析器
server.use(express.bodyParser());
server.use(express.cookieParser());
//启用session
server.use(express.session({secret: 'anything', key: 'express.sid'}));


2. 添加登陆post路由, 将用户名信息存入session中

//登陆post路由
server.post('/login', function (req, res) {
	var name = req.body.name;
	var password = req.body.password;
	req.session.user = name;
	res.redirect('/');
});


 

3. 修改主页路由, 判断如果没有登陆就重定向到登陆界面:

server.get('/', function (req, res) {
	if (req.session.user) {
		res.render('index');
	} else {
		res.redirect('/login');
	}
});

再用浏览器打开http://localhost:8080/, 会出现登陆界面, 输入任意非空用户名后, 即可登陆

本文完整demo见附件, 下一讲将介绍加密密码, 汉化i18n等内容
另外, 一个小技巧:客户端js里生成socket时, 需要指定ip和端口, 如果是本机, 可以直接:socket = io.connect(‘http://’ + location.hostname + ‘/’, { port: location.port });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值