令牌Token的生成和使用详解 通过用前端原生ajax网络请求和后端node.js的expres库模拟demo来实现

  1. 令牌Token作用和使用场景
    Token主要是用于登录模块使用,实现在设置的一段时间内来实现自动登录,减少再次输入账号密码,提高用户体验

  2. 为什么不使用cookie和session来实现自动登录而使用令牌Token

    不使用cookie是因为cookie数据保存在浏览器上数据不加密容易被伪造数据不安全,加上cookie数据手动可以删除数据。
    不使用session的原因是因为session数据以文件的形式保存在服务器,如果用户数量大,这样增加造成服务器压力,和session数据在不同服务器上数据不共享,因为现在用户量大,都是使用分布式服务器,这就是不适用的原因
    
  3. Token生成和保存解释

    后端获取前端登录时传来的账号和密码等ip信息,加上自定义密钥和过期时间,使用jsonwebtoken库,来签名加密数据生成token,保存一份到数据库,响应一份token到前端,前端获取token,通过localStorage.setItem()来保存到浏览器,登录成功后,每次发起请求的时候,通过localStorage.getItem()来获取token值,然后在请求头上面携带token值,传到后端,后端通过jsonwebtoken库来解密验证token值是否过期和解密后的用户账号和密码IP值从数据库获取响应用户数据,如果过期则跳到登陆界面
    
  4. localStorage的作用和方法解释

    localStorage数据保存浏览器上,数据是持久化保存,不会因为浏览器关闭和过期时间的设定而自动删除数据,它的数据要手动设置删除数据

    主要方法:
    setItem(key,value) :设置key和value值保存数据
    getItem(key) : 通过key来获取数据
    clear():清除localStorage保存的所有数据
    remove(key):清除指定key值的数据

  5. 通过一个demo练习来实现token使用过程,下面的前端代码使用原生xmlHttpRuest对象发起网络请求

<script>
	//模拟的登录的时候获取的账号密码
	var account=123;
	var password="abc123";
	var tokenText={
   "account":account,"password":password};
	//通过原生ajax来进行网络请求,创建网络请求对象XMLHttpRequest()
	
	var xmlHttRequest = new XMLHttpRequest();
	xmlHttRequest.open("post","http://localhost:80/SetToken",true);
	//open() 方法就是创建网络请求,第一个参数是 请求方式我是用的是post方式,第二个参数是请求的后端网址,第三个就是是否使用异步(true)或同步(false)请求
	//当xmlHttRequest状态码readyState发生改变 自动触发onreadystatechange事件
	//注意后面方法不用小括号
	xmlHttRequest.onreadystatechange=getData;
	//先从本地获取token,如果本地token还没保存有,则token=null
	var token=localStorage.getItem(</
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值