JWT

时间:2020-05-31 23:20:07   收藏:0   阅读:70

JWT

参考思路

为用户提供授权操作非公开资源,有很多种方式。比如使用 token、session、cookie,还有允许第三方登录授权的 OAuth 2.0.

一、使用 session 授权

session 原理:
利用 session 来验证用户,有两种机制实现。

1 基于服务端的 session,它可以把用户凭证session ID 存储在服务端(内存或者数据库redis等),服务端可以识别这个 session ID 验证用户身份然后才会授权
2 把 session ID 和其他数据加密后发给用户,由客户端cookie存储,并在以后每次请求中发给服务端来验证

二、使用 JWT 授权

JWT 的原理:

前端存储和发送 token 的方式有以下两种:

1. 使用 Header.Authorization + localStorage 存储和发送 token

2. 使用 cookie 存储和发送 token:

使用 jsonwebtoken 来实现 JWT 用户授权:

  1. jwt.sign(payload, secretOrPrivateKey, [options, callback]) 用于签发 token,如果有 callback 将异步的签名 token。
  2. jwt.verify(token, secretOrPublicKey, [options, callback]) 用于验证 token
  3. jwt.decode(token [, options]) 解码 token

三、使用 OAuth 2.0 授权:

OAuth 2.0

总结

比如:

  1. 基于服务端的 session,它可以把用户凭证session ID 存储在服务端(内存或者数据库redis等),但是也是可以发给前端通过cookie保存的。
  2. JWT 可以把作为用户凭证的 token 在服务端签发后发给用户保存,可以在 localStorage 保存,同样也可以保存在 cookie 。
  3. OAuth2.0是比较复杂的一种授权方式,但是它后面获得 token 后也可以像 JWT 一样处理 token 的保存和验证来授权用户。

localStorage和sessionStorage区别

sessionStorage

localStorage

js 使用
1 setItem 存储 value

  sessionStorage.setItem("key", "value"); 	
  localStorage.setItem("site", "js8.in");

2 getItem 获取 value

  var value = sessionStorage.getItem("key");
  var site = localStorage.getItem("site");
  //滚动时保存滚动位置
  $(window).scroll(function(){
  if($(document).scrollTop()!=0){
      sessionStorage.setItem("offsetTop", $(window).scrollTop());//保存滚动位置
      } 
  });
  //onload时,取出并滚动到上次保存位置
  window.onload = function()
  {
      var _offset = sessionStorage.getItem("offsetTop");
      $(document).scrollTop(offsetTop);
  };

原文:https://www.cnblogs.com/justblue/p/13022167.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!