node.js的cookie session token的介绍以及使用方法

因为http是无状态的,所以没有办法记录用户当前的状态,比如登录状态,一旦刷新网页,登录状态就消失了,所以必须通过cookie session token来设置用户的登录状态

cookie:在客户端设置状态
session:在服务器端设置状态
token:有跨域问题时使用token

1.token的使用方法:
项目中除了登录之外的其他接口,都需要在登录之后才能访问,token只应该在打开网页的时候生效,所以将token设置在sessionStorage中

本地存储(sessionStorage关闭浏览器删除数据,localStorage只能手动删除,其他页面也能使用存储在浏览器中的数据):
sessionStorage.setItem(key,value):把数据存储在用户浏览器中
sessionStorage.getItem(key):获取数据
sessionStorage.removeItem(key):删除数据
sessionStorage.clear():删除所有数据
localStorage.setItem(key,value):把数据存储在用户浏览器中
localStorage.getItem(key):获取数据
localStorage.removeItem(key):删除数据
localStorage.clear():删除所有数据

设置token代码:写在验证账号密码成功之后

window.sessionStorage.setItem("token",res.data.data.token);

如果用户没有登录,直接通过URL访问特定的页面,需要重定向到登录页面

//touter为vue框架的路由对象(new Router),添加beforeEach实现重定向
router.beforeEach((to,form,next)=>{
  //to表示将要访问的路径 from代表从哪个路径跳转而来 next是一个函数,表示放行
  //访问登录页面直接放行
  if(to.path == '/login') return next()
  //从sessionStorage中获取到保存的token值
  const tokenStr = window.sessionStorage.getItem('token');
  //没有token,强制跳转到登录页面
  if(!tokenStr) return next('/login')
  next()
})
//通过axios请求拦截器添加token,在发送请求之前会先执行use当中的函数,设置token参数,保证拥有获取数据的权限
//axios请求拦截
axios.interceptors.request.use(config => {
	//为请求头对象添加token验证的author字段, 
	//window.sessionSorage.getItem('token');就是在登录之后设置的token参数
	config.headers.author = window.sessionSorage.getItem('token');
	return config
})

2.session:实际上就是一个对象,存储在服务器的内存中,在session对象中也可以存储多条数据,每一条数据都有一个sessionid做为唯一标识

在node.js中需要借助express-session实现session功能

//写在app.js文件最上面
const session = require('express-session');
app.use(session({ secret:'secret key'} ))//加密字符串
//写在验证账号密码之后
req.session.username = user.username;//保存session对象
req.app.local.userinfo = user;//设置全局对象

3.cookie:浏览器在电脑硬盘中开辟的一块空间,主要提供服务器端存储数据
cookie中的数据是以域名的形式进行区分的
cookie中的数据是有过期时间的,超过时间的数据会被浏览器自动删除
cookie的数据会随着请求被自动发送到服务器端

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值