SQL语句的 增删改查
select * from users
insert into users (username, password) values ('mz', '123456')
update users set password=654321 where id=4
delete from users where id=4
在代码里面 增删改查
链接数据库
const mysql = require("mysql");
const db = mysql.createPool({
host: "127.0.0.1", // 数据库的 IP 地址
user: "root", // 登录数据库的账号
password: "root", // 登录数据库的密码
database: "heima", // 指定要操作哪个数据库
});
代码的4个操作
db.query('select * from users', (err, results) => {
// 查询失败
if (err) return console.log(err.message)
// 查询成功
console.log(results)
})
const user = { username: 'jerry', password: '123456' }
const sqlstr = 'insert into users set ?'
db.query(sqlstr, user ,(err, results) => {
// 插入失败
if (err) return console.log(err.message)
// 插入成功
if (results.affectedRows === 1) { console.log('插入数据成功') }
})
const user = { id: 7, username: 'spike', password: '123000' }
const sqlstr = 'update users set ? where id=?'
db.query(sqlstr, [user, user.id] ,(err, results) => {
// 更新失败
if (err) return console.log(err.message)
// 更新成功
if (results.affectedRows === 1) { console.log('更新数据成功') }
})
1. 身份认证-- 面试必问–百度自己去找
本地存储 localStorage sessionStroage
cookies
- 什么是cookies? 储存在用户电脑上面的一个字符串,键值对(name,value)的形式
- 大小不能超过 4KB
- cookies是随着每次的请求头,自动发送给服务器
- 有自己专属的过期时间;
- 每个域名都有自己独立的cookies; 每个网站cookies不会互相串通
session认证机制
- 前端发起登录请求以后, 后端校验完毕以后,如果都是正确的,则证明登录成功;但是因为http协议是无状态的; 那么我们下次在发其他请求的时候,服务器并不知道我们有没有登录。 这个时候就涉及到认证机制
- 那么我们就使用了一种 session-cookies的机制,来进行用户的认证。 登录成功以后,后端会返回给前端一个sessionID(用这个id来校验我们的身份), 这个返回的sessionID 值通过请求响应头的设置,存储到本的cookies里面;
- 然后后面的每一个请求,都会自动带上我们的cookies,放在请求头里面,自动发送给服务器; 服务器拿到cookies以后,做校验,和服务器自己的sessionID做对比; 从而判断用户的身份
JWT认证机制
- 前端登录成功以后,后端会生成一个特殊的字符串 ,就是token。 服务器不保存, 在上面的session-cookies机制里面; 服务器会报错用户的sessionid,以供后面的前端传递过来的cookies做对比校验使用; jwt这种机制,服务器是不用保存的
- 前端拿到服务器返回的token值以后,需要手动存储在 localStroage里面; 在每次发请求之前,放在请求头里面的
Authorization
; 在上面session-cookies机制里面, cookies不需要手动发送,http默认的机制就会吧cookies带上 - 后端接受到我们的请求以后,会自己主动去请求头把这个参数解析出来, 按照一定的规则,转换成我们需要的 一些信息
- 后端: jsonwebtoken (后端用来生成token字符串的一个js包; 将token发送给前端)
- express-jwt (后端用来校验 前端通过authorization传递过来的token 是否有效)