登录功能

11 篇文章 0 订阅
访问/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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值