使用express-session实现登录效果
本文为后端练兵内容,重复造轮子,重复造轮子才能有经验,才能生出花来。
本次练兵,采用的是数据库保存账户密码,后端通过查数据库的方式,实现账号和密码的校验。
如果验证成功,将登陆状态保存在session上面,然后重定向首页。
如果session过期重定向到登陆页面。
前端登陆页面,访问路径/login
<div>
<input type="text" id="username" placeholder="Search" name="username">
<input type="text" id='password' name="password" value="0">
</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 === 200) {
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 > 0) { req.session.islogin = 1 res.json({ status: 200, msg: '操作成功', result: [] }) } else { req.session.islogin = 0 res.json({ status: 500, msg: '查询失败', result: [] }) } }).catch((err) => { res.json({ status: 500, msg: '登录失败', result: [] }) }) }); module.exports = router;
数据库连接配置/db/mysql
var mysql = require('mysql'); var con = mysql.createConnection({ host: 'localhost', port: '3306', user: 'root', password: '123456', 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,账号和密码可以自行建表设计。
代码很粗糙,主要是效果。
我站在山顶看风景!下面是我的家乡!


浙公网安备 33010602011771号