使用express-session实现登录效果
本文为后端练兵内容,重复造轮子,重复造轮子才能有经验,才能生出花来。
本次练兵,采用的是数据库保存账户密码,后端通过查数据库的方式,实现账号和密码的校验。
如果验证成功,将登陆状态保存在session上面,然后重定向首页。
如果session过期重定向到登陆页面。
前端登陆页面,访问路径/login
<div>
<input type="text" id="username" placeholder="Search" name="username">
<input type="text" id='password' name="password" value="">
</div>
<button id="login">Submit</button>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 可选地,上面的请求可以这样做
let btn = document.querySelector("#login")
console.log(btn)
btn.addEventListener('click', function () {
let username = document.querySelector('#username').value
let password = document.querySelector('#password').value
axios.get('/users/login', {
params: {
username: username,
password: password
}
})
.then(function (res) {
if (res.data.status === ) {
alert('登录成功')
location.href='/'
} else{
alert('登录失败')
}
})
.catch(function (error) {
console.log(error);
});
}) </script>
后端路由
var express = require('express');
var router = express.Router();
var exec = require('../db/mysql')
var exec = exec.exec
/* GET users listing. */
router.get('/', function (req, res, next) {
res.send('respond with a resource');
});
//登录校验接口 /users/login
router.get('/login', function (req, res, next) {
let name = req.query.username, pwd = req.query.password
let sql = `select * from user where username='${name}' and password=${pwd}`
exec(sql).then((result) => {
if (result.length > ) {
req.session.islogin =
res.json({
status: ,
msg: '操作成功',
result: []
})
} else {
req.session.islogin =
res.json({
status: ,
msg: '查询失败',
result: []
})
}
}).catch((err) => {
res.json({
status: ,
msg: '登录失败',
result: []
})
})
});
module.exports = router;
数据库连接配置/db/mysql
var mysql = require('mysql');
var con = mysql.createConnection({
host: 'localhost',
port: '',
user: 'root',
password: '',
database: 'test'
});
con.connect();
function exec(sql){
return new Promise((resolve,reject)=>{
con.query(sql,(err,result)=>{
if(err){
reject(err)
return
}
console.log(result,'res')
resolve(result)
})
})
}
module.exports={
exec
}
数据库采用的mysql,账号和密码可以自行建表设计。
代码很粗糙,主要是效果。
使用express-session实现登录效果的更多相关文章
- express session 实现登录
https://www.cnblogs.com/mingjiatang/p/7495321.html Express + Session 实现登录验证 1. 写在前面 当我们登录了一个网站,在没有 ...
- Express + Session 实现登录验证
1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我 ...
- nodejs+express+mongodb实现登录注册
nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...
- express session 和 socketio session关联
express session http是没有状态的协议, 需要web框架自己实现会话和会话管理工作. express框架有session插件可以使用. 见如下介绍: https://www.tuto ...
- 创建Cookie,简单模拟登录,记录登录名,购物车记录先前添加内容,session控制登录
工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站, ...
- js弹窗登录效果(源码)--web前端
1.JS弹窗登录效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- xpath技术解析xml以及案例模拟用户登录效果
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...
- 使用COOKIE实现登录 VS 使用SESSION实现登录
注:本文使用的代码基于PHP,其他语言逻辑同理. 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证.比如admin用户登录了之后,服务端生成一个co ...
- Android Material Design控件学习(三)——使用TextInputLayout实现酷市场登录效果
前言 前两次,我们学习了 Android Material Design控件学习(一)--TabLayout的用法 Android Material Design控件学习(二)--Navigation ...
- net mvc中实现记录用户登录信息(记住登录效果)
现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...
随机推荐
- 3.Redis数据类型
Redis的五大数据类型: 1.string(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安 ...
- 怎么读取properties文件和ini文件?
一.读取properties文件: properties中的内容: server.ip = 127.0.0.1 server.port = 22 //原生java即可读取public static v ...
- CentOS7.X 搭建LAMP
第一部分搭建LAMP基础环境 1.检查CentOS是否为7.x版本 2.安装LAMP中的apache,采用yum源方法安装 yum install httpd httpd-devel A ...
- Linux行编辑器——ed
实验文件test.txt内容 root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x:::daemon:/sbin: ...
- 【问题】bzip2 --version 2>&1 < /dev/null
https://unix.stackexchange.com/questions/230887/what-does-dev-null-mean https://stackoverflow.com/qu ...
- 用js刷剑指offer(链表中倒数第k个结点)
题目描述 输入一个链表,输出该链表中倒数第k个结点. 牛客网链接 思路 设置两个指针,p,q,先让p走k-1步,然后再一起走,直到p为最后一个 时,q即为倒数第k个节点 js代码 // 空间复杂度1 ...
- webpack中环境变量的使用方法
这节课讲解一下,在webpack打包过程中,怎么去使用一些环境变量. 首先我有一个打包配置的三个文件 "scripts": { "dev-build": &qu ...
- synchronized 和 Lock 有什么区别?(未完成)
synchronized 和 Lock 有什么区别?(未完成)
- 【python】发送邮件,含附件
def send_mail(_user,_pwd,_to): # f = open(file_new,'rb') # mail_body = f.read() # f.close() # 读取最新测试 ...
- tp5 左连接
db('detainform')->alias('d')->join("information i",'i.z_id=d.z_id','LEFT')->where ...