package.json
bin:{
'zj':"./bin/www.js"
}
npm link l链接到当前哦配置的目录
www.js中写
#!/usr/bin/env node
cookie session
cookie的问题每次都带着浪费带宽
jwt出现了
token 签名
不能给客户端敏感信息
sha256 RSA
用来签名的密码
发给客户端也不存用户信息
下次客户端请求的时候带上内容和签名
服务器收到客户端再次传来的结果 根据内容再次签名 和刚才的签名一样 用户确实存在
不需要每次都带上token 节约流量 服务器不需要占用内存 信息也相对于可靠一些
不需要跨服务端 域名内可以共用 多端共用
jwt 三个部分 用. 点隔开
头部{typ:'JWT',alg:"HS256",}
Payload 负载 需要额数据
{"id":,userName,address}
Signnature 签名 。 xxxxqqq
base64.xxxqqq
base64a.base64.base64b.base64c
客户端收到会存到localstorage中
用到的时候拿出来
express实现jwt权限校验
用户登录后可以进入订单页
/order ===login
bodyparser 解析请求体
jwt-simple
robo3t 可视化工具
let jwt =require('jwt-simple')
// 产生一个签名结果
密码不放进去
let token = jwt.encode(user,secret)
jwt.decode
密钥 定死一个常量
secret = 'secret'
res.json({
code:0,
data:{
token
}
})
header头带过来
再次生成后的 jwt.encode(user,secret)内容和带过来的不一样 那么就是不存在
请求头
authorization:Bearer token
req.headers['authorization']
取的头都是小写 发的都是大写
app.use()
// app.get()
app.use 再app.get上面的话 下面的get 都先执行中间件
app.get(''/order",auth,functionn(req,res){
})
// 针对某一条路由做中间件
查询用户
decode 可以解密出来就是有用户 解密不出来就是没有用户
// 中间件里面设置
res.setHeader('Access-Conntroll-Allow-Origin','*')
res.setHeader('Access-Conntroll-Allow-Headers','Content-type,Authorization')
res.setHeader('Access-Conntroll-Allow-Methods','GET,POST,DELETE,OPTIONS')
if(req.method === 'OPTIONS'){
res.end()
} else {
next()
}
// 跨域头
vue3.0安装完cli 直接vue create xxname即可
axios.defaults.baseURL='http://localhost:3000'
跳转401 登录页面
router.history.push('/login')
Not Arrowed
// 自己实现一个jwt.js . 加密解密的具体实现
jwt-simple
let jwt = {
decode(token,secret){}
encode(payload,secret){}
}