Detailed explanation of VUE Token's invalidation process

Detailed explanation of VUE Token's invalidation process

Target

Handling token expiration scenarios

Token, as the key token information of the user, is not valid for a long time. Generally, there will be an expiration time (determined by the backend after what time it will expire). If the expiration time is exceeded, the current token can no longer be used as a user identification to request data. At this time, we need to do some additional expiration processing

Thought Analysis

insert image description here

Backend : When receiving a request from a user to access a certain interface, check whether the current token is invalid. If the token is invalid, return an agreed status code 10002 to the frontend.

Front-end : In the response interceptor, analyze the return value of the interface. If the status code is 10002, perform token invalidation operation.

Code landing

In **src/utils/request.js** , add custom logic when handling the error of the response interceptor

Since page jumps require routing, we first introduce

// Import routing import router from '@/router'

Code

// In the response interceptor // 1. Determine whether the operation is successful based on the data returned by the backend, and report an error if it is unsuccessful // 2. If successful, only return valid data service.interceptors.response.use(
  response => {
    // Agreement between backend and frontend: success=true indicates successful request if (response.data.success) {
      return response.data
    } else {
      // If success is false, the business is wrong, and reject is triggered directly
      // Captured by catch branch return Promise.reject(new Error(response.data.message))
    }
  },
  async error => {
    console.log('Request error', error)
    if (error.response.data.code === 10002) {
      console.log('token expired')
      await store.dispatch('user/logout')
      // .vue -- this.$route.fullPath
      // .js -- router.currentRoute.fullPath

      router.push('/login?return_url=' + encodeURIComponent(router.currentRoute.fullPath))
    }
    console.dir(error)
    return Promise.reject(error)
  }
)

The above solution is the backend-led solution. The frontend only needs to get the error code to do business processing. This solution is also the most commonly used and safest solution.

Summarize

This article ends here. I hope it can be helpful to you. I also hope you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • Vue implements automatic jump to login page when token expires
  • Vue keeps the user logged in (various token storage methods)
  • Token verification login in Vue project (front-end part)
  • Vue implements user login and token verification
  • VUE implements token login verification

<<:  10 excellent Web UI libraries/frameworks

>>:  The current better way to make select list all options when selected/focused

Recommend

MySQL 5.7.33 installation process detailed illustration

Table of contents Installation package download I...

A pitfall and solution of using fileReader

Table of contents A pitfall about fileReader File...

Typescript+react to achieve simple drag and drop effects on mobile and PC

This article shares the specific code of typescri...

How to define data examples in Vue

Preface In the development process, defining vari...

Linux tutorial on replacing strings using sed command

To replace a string, we need to use the following...

Programs to query port usage and clear port usage in Windows operating system

In Windows operating system, the program to query...

How to use mysqladmin to get the current TPS and QPS of a MySQL instance

mysqladmin is an official mysql client program th...

Detailed explanation of adding dotted lines to Vue element tree controls

Table of contents 1. Achieve results 2. Implement...

Simple usage examples of MySQL custom functions

This article uses examples to illustrate the usag...

MySQL 8.0.18 deployment and installation tutorial under Windows 7

1. Preliminary preparation (windows7+mysql-8.0.18...