访问/reg,退出登陆
index.js
const express = require('express'),
router = express.Router(),
sql = require("../module/mysql");
// sql('INSERT INTO `phone` (`id`,`number`, `name`, `phone`) VALUES (0,?,?,?)')
router.get('/',(req,res)=>{
sql('SELECT * FROM phone',(err,data)=>{
res.render('index.ejs',{ data : data });
})
});
// 注册交给login.js
router.use('/login',require('./login'));
// 登陆
router.use('/reg',require('./reg'));
// 退出
router.use('/logout',(req,res)=>{
// 清除cookie
res.clearCookie('login');
// 跳转到首页 redirect网址重定向
res.redirect('/');
})
module.exports = router;
引用cookie模块,在其他页面保持保持登陆状态(访问每个页面都执行)
,package.json
{
"name":"node02",
"version":"0.0.1",
"dependencies":{
"express":"latest",
"ejs":"latest",
"mysql":"latest",
"body-parser":"latest",
"cookie-parser":"latest"
}
}
app.js
const http = require('http'),
express = require('express'),
app = express(),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser');
// 模板引擎
app.set('views',__dirname+'/views');
app.set('view engine','ejs');
// 公共目录
app.use(express.static(__dirname+'/public'));
// post接收
app.use(bodyParser.json());
app.use( bodyParser.urlencoded({ extended:true }) );
// cookie
app.use(cookieParser('1345679')) //密钥.
// 不同页面保持登陆状态. use()路径不写.==>全部页面执行.
app.use(function(req,res,next){ //没有next页面会一直加载
if(req.cookies['login']){
res.locals.login = req.cookies.login.user;
};
// 继续往下执行
next();
})
app.use('/',require('./router/index'));
http.createServer(app).listen(123);
<!-- //执行完相当return -->
res.json({}) , res.send()
<!-- // 保持登陆状态. node后端方法 设置cookie -->
// 1.cookie名称. 2. 数据 3.过期时间maxAge (毫秒)
res.cookie({})
<!-- require 模块cookie-parser -->
<!-- // cookie -->
app.use(cookieParser('1345679')) //密钥.
// 不同页面保持登陆状态. use()路径不写.==>全部页面执行.
app.use(function(req,res,next){ //没有next页面会一直加载
if(req.cookies['login']){
res.locals.login = req.cookies.login.user;
};
next();
})
// 退出
router.use('/logout',(req,res)=>{
// 清除cookie
res.clearCookie('login');
// 跳转到首页 redirect网址重定向
res.redirect('/');
})
登陆检测 ,保存登陆状态(设置cookie)
reg.js
const express = require('express'),
router = express.Router(),
sql = require('../module/mysql.js');
router.get('/', (req,res)=>{
// 进入判断浏览器的cookies ,在这判断的话只能一个页面保持登陆状态
console.log(req.cookies);
res.render('reg');
})
router.post('/', (req,res)=>{
const name = req.body.name,
pass = req.body.pass;
sql('SELECT * FROM user WHERE name = ?',[name],(err,data)=>{
console.log(data);
//先判断用户存不存在
if(data.length === 0) {
res.send("用户不存在");
return;
};
if(data[0]['pass'] == pass){//密码正确
// 保持登陆状态. node后端方法 设置cookie
// 1.cookie名称. 2. 数据{} 3.过期时间maxAge (毫秒)
res.cookie('login',{user:name},{maxAge: 1000*60*60*24});
res.json({
result:"登陆成功"
});
}else{
res.send('密码错误');
}
})
})
module.exports = router;
使用ajax,服务器返回:res.json({})
reg.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>登陆</h1>
<% if( locals.login ) {%>
<h1><%= locals.login %>已经登陆 <a href="/logout"> 退出 </a></h1>
<% }else{ %>
<input class="name" type="text" name="name">
<input class="pass" type="text" name="pass">
<input type="button" class="submit">
<% } %>
<script src="/js/jquery.js"></script>
<script>
$(".submit").click(function(){
$.ajax({
url:'/reg',
type:'post',
data: {
name:$('.name').val(),
pass:$('.pass').val()
},
dataType:'json',
success:function(data){
console.log(data);
// 刷新页面
window.location.reload();
},
error:function(data){ //dataType不是json 走这
// data => {..responseText:data...}
console.log(data);
}
})
})
// var allcookies = document.cookie;
// allcookies&&console.log(allcookies);
</script>
</body>
</html>