使用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保存用户名和用户密码,当用户登录不选择记住登录时, ...
随机推荐
- 使用Mmap系统调用进行硬件地址访问
Mmap系统调用: Mmap函数是内存映射函数,负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改,来实现堆文件的读取和修改,而不需要再调用read,write等操作. 原型如下: 其 ...
- vscode-golang跳转定义无效问题
问题发现: 本来可以进行"ctrl"+点击或者F12,进行跳转定义的方式,突然失效了 问题分析: 1.辅助工具是否关闭 解决方案,进入首选项,设置,查找go.docsTool,选项 ...
- 当跨域时,js ajax 请求出现options请求
上面有文章说过http的options. 查了很久.试了很多版本的jQuery,下面这段代码在同事的机子上测试是没有问题的.正常 的请求, 一在我机子上面就会出现option,网上说先向服务器预检等. ...
- 实现LAMP架构
LAMP介绍 LAM(M)P: L: linux A: apache (httpd) M: mysql, mariadb M:memcached P: php, perl, python WEB资源类 ...
- 微信小程序将图片数据流添加到image标签中
原文:https://blog.csdn.net/OliveLao/article/details/78136121 ---------------------------------------- ...
- [hdoj4578][多延迟标记的线段树]
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)T ...
- Nginx location规则匹配
^~ 标识符匹配后面跟-一个字符串.匹配字符串后将停止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就停止对后续的正则匹配 = 精 ...
- Git 的核心概念
本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手. 版本控制系统 Git 是目前世界上最优秀的分布式版本控制系统.版本控制系统是能够 ...
- ZooKeeper - 攘外安内的多面管理员
Zookeeper 作为分布式协调框架,在实际生产中有着不可替代的位置,它作为管理框架,大多数时间是不需要我们去维护的.也正是由于它是协调全局的管理者,所以它的一些内部原理我们还是要了解的. 今天我们 ...
- Codeforces Round #426 (Div. 2) B题【差分数组搞一搞】
B. The Festive Evening It's the end of July – the time when a festive evening is held at Jelly Castl ...