Token

作者: 懂会悟 | 来源:发表于2020-09-15 08:22 被阅读0次

1、Token认证机制

基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或会话信息。这也就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登陆了,这就为应用的扩展提供了便利.


2、项目中使用Token的流程

  • 前端使用用户名跟密码请求首次登录
  • 后服务端收到请求,去验证用户名与密码是否正确
  • 验证成功后,服务端会根据用户id、用户名、定义好的秘钥、过期时间生成一个 Token,再把这个 Token 发送给前端
  • 前端收到 返回的Token ,把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  • 前端每次路由跳转,判断 localStroage 有无 token ,没有则跳转到登录页。有则请求获取用户信息,改变登录状态;
  • 前端每次向服务端请求资源的时候需要在请求头里携带服务端签发的Token
  • 服务端收到请求,然后去验证前端请求里面带着的 Token。没有或者 token 过期,返回401。如果验证成功,就向前端返回请求的数据。
  • .前端得到 401 状态码,重定向到登录页面。

3、什么是JWT

JWT全称:Json web token 是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准


4、JWT的应用场景

一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,简而言之它就是从客户端发送给服务端的一种身份认证.


5、node中的express-jwt

express-jwt是nodejs的一个中间件,用来验证指定http请求的JsonWebTokens的有效性,express-jwt内部引用了jsonwebtoken,对其封装使用。 在实际的项目中这两个都需要引用,他们两个的定位不一样。jsonwebtoken是用来生成token给客户端的,express-jwt是用来验证token的。

// 前端

axios.defaults.headers.common['Authorization'] = 'Bearer ' + token

// 引入
import expressJwt from "express-jwt"
import jwt from "jsonwebtoken"

// create token
function createToken(uid, role = null, tenant = null, language = null, level = null, fun = null) {
  const exp = Date.now() + 1000 * 60 * 60 * 24 * TokenTimeOut
  let obj = { uid, tenant, role, level, fun, exp }
  return jwt.sign(obj, TokenKey)
}

<!--check token-->
function registerToken() {
  return expressJwt({
    secret: TokenKey,
    credentialsRequired: false,
    getToken: req => {
      let token = null
      if (req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer") {
        token = req.headers.authorization.split(" ")[1]
      }
      if (token) {
        //将token解析,放入 req.jwt 内
        let obj = jwt.verify(token, TokenKey)
        obj.token = token
        req.jwt = obj
      }
      return token
    }
  })
}

相关文章

  • Java-token

    token基础 生成token 解析token 问题 : 在退出登录 / 修改密码时怎样实现JWT Token失效...

  • keystone token和zoning

    keystone四种token keystone的四种token为:UUID token、PKI token、PK...

  • NodeJS中使用token

    JWT(Json Web Token) 1. Token 什么是Token?Token指访问资源的凭据,是一种身份...

  • token登录,定时刷新token

    access_token.js 存取token

  • 关于Hbase查询token

    设置普通token: 设置and 设置or List tokens存放所有要or的token Res...

  • axios如何利用promise无痛刷新token

    需求 最近遇到个需求:前端登录后,后端返回token和token有效时间,当token过期时要求用旧token去获...

  • 区块链小白问答#2 - 区块链和Token

    1 Token和区块链的关系是什么?区块链可以没有Token,但是公链不能没有Token。没有Token区块链就是...

  • JWT原理

    1. JWT和传统token 基于传统的token认证用户登录,服务端给返回token,并将token保存在服务端...

  • Token优势步骤与实现

    Token优势原理步骤与实现 Token优势原理步骤与实现token的优势步骤实现前端vue登入成功获取token...

  • jsonwebtoken生成与解析token

    之前写了一篇介绍token的文章:简单理解Token机制,token算法自己设计的,使用了随机算法,导致token...

网友评论

      本文标题:Token

      本文链接:https://www.haomeiwen.com/subject/swznsktx.html