第一步:

建立cookie的 添加、设置、和删除

auth.js

import Cookies from 'js-cookie'const TokenKey = 'APPMGRID'  //APPMGRID这个token名字自己定义export function getToken() {return Cookies.get(TokenKey)
}export function setToken(token) {return Cookies.set(TokenKey, token)
}export function removeToken() {return Cookies.remove(TokenKey)
}

第二步:

点击登录按钮的时候 去调用登录接口

 this.$store.dispatch('user/login', this.loginForm).then(data => {this.loading = falseif (data === null) returnthis.$router.push({ path: '/dashboard' })}).catch(() => {this.loading = false})

this.loginForm 是调用登录传递的数据。


第三步:

设置store,login 登录的API和操作cookie的方法。调用login接口的时候,获取token信息,然后设计进 cookie。
store

import { login } from '@user.js' //引入user.js
import { getToken, setToken, removeToken } from '@auth.js'   //引入auth.jsconst state = {token: getToken()
}const mutations = {SET_TOKEN: (state, token) => {state.token = token}
}const actions = {// user loginlogin({ commit }, userInfo) {return new Promise((resolve, reject) => {login(userInfo).then(response => {const { APPMGRID } = responsecommit('SET_TOKEN', APPMGRID)setToken(APPMGRID)resolve(response)}).catch(error => {reject(error)})})}
}

接口API地址

user.js

export function login(data) {return request({url: '/home/login',method: 'post',data})
}

第四步:

封装的请求文件

request.js

import axios from 'axios'
import qs from 'qs'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'// create an axios instance
const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url// withCredentials: true, // send cookies when cross-domain requeststimeout: 5000, // request timeoutheaders: {'Content-Type': 'application/x-www-form-urlencoded'}
})// request interceptor
service.interceptors.request.use(config => {// do something before request is sentif (config.method === 'post') {config.data = qs.stringify(config.data)}if (config.method === 'get') {config.url = config.url + '?' + qs.stringify(config.data)}if (store.getters.token) {// let each request carry token// ['X-Token'] is a custom headers key// please modify it according to the actual situation// config.headers['X-Token'] = getToken()if (getToken()) {config.headers['APPMGRID'] = getToken()}}return config},error => {// do something with request errorconsole.log(error) // for debugreturn Promise.reject(error)}
)// response interceptor
service.interceptors.response.use(/*** If you want to get http information such as headers or status* Please return  response => response*//*** Determine the request status by custom code* Here is just an example* You can also judge the status by HTTP Status Code*/response => {const data = response.dataif (data.result === 'success') {return Promise.resolve(data.data)} else {MessageBox.alert(data.message + ': ' + data.detail, '提示', {confirmButtonText: '确定',type: 'warning',lockScroll: false}).catch(() => {})return null}},error => {console.log('err' + error) // for debugMessage({message: error.message,type: 'error',duration: 5 * 1000})return Promise.reject(error)}
)export default service

设置成功以后每次请求都会 头部 家伙加上数据:

vuex登录后设置token相关推荐

  1. axios 登录后设置header_axios如何利用promise无痛刷新token

    需求 最近遇到个需求:前端登录后,后端返回token和token有效时间,当token过期时要求用旧token去获取新的token,前端需要做到无痛刷新token,即请求刷新token时要做到用户无感 ...

  2. vue中后台管理登录后的token管理

    在做后台管理系统的时候,登录后token管理很重要.上代码,有瑕疵,有待改善,见谅. import Vue from 'vue' import Router from 'vue-router' imp ...

  3. 【自动化测试】解决获取Okta登录后的token问题

    背景: 为公司的项目做自动化,做的是一个regression自动化,将UI和API写在同一个项目里,关键场景的UI cases和全量的API cases. 但是在API中,有个接口是必须要真实用户的t ...

  4. axios 登录后设置header,vue+axios 全局添加请求头和参数操作

    vue+axios 全局添加请求头和参数操作 走登录的接口都会返回一个 token 值, 然后存起来方便之后调接口的时候给后台传过去, 传给后台的方式有两种:(具体使用哪种需要和后台商量) 1, 放在 ...

  5. Vue中登录验证成功后保存token,并每次请求携带并验证token操作

    在vue中,可以用sessionStorage或localStorage来存储token,也可以用vuex来存储(但要考虑页面刷新数据消失问题,可以在vuex用Storage),下面介绍用localS ...

  6. ssh 免密码登录(设置后仍需输密码的原因及解决方法)

    ssh 免密码登录(设置后仍需输密码的原因及解决方法) 参考文章: (1)ssh 免密码登录(设置后仍需输密码的原因及解决方法) (2)https://www.cnblogs.com/guanyf/p ...

  7. 设置SAP登录后的背景图片(很有意思)

    事务码:SMW0 进入SMW0或者通过菜单"Tools -> Web Development -> Web Repository"(中文系统"工具 -> ...

  8. Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法

    Devexpress xaf框架生成的项目默认情况下导航栏是显示在左侧,有时候我们用某个账户登录后,发现导航栏无法显示在左侧,操作十分不方便.我们可以去数据库删除当前登录用户的自定义布局 解决方法如下 ...

  9. php登录后自动退出登录,PHP利用Cookie设置用户30分钟未操作自动退出功能

    登陆控制器需要做的登陆成功把用户ID等信息存入cookie: $this->systemSetKey(array('name'=>$admin_info['admin_name'], 'i ...

最新文章

  1. 基于TableStore的海量气象格点数据解决方案实战
  2. nextcloud php工程师,教你如何基于宝塔面板和nextcloud搭建自己的网盘
  3. 从零点五开始用Unity做半个2D战棋小游戏(二)
  4. mysql 日期时间类型 自动转型 及 运算
  5. 《SAS编程与数据挖掘商业案例》学习笔记之五
  6. Java ObjectStreamClass getSerialVersionUID()方法(带示例)
  7. 疯狂的图形(利用C# + GDI plus模拟杂乱无章的现实场景)
  8. 《OpenGL超级宝典》第一章:3D图形和OpenGL简介
  9. wordpress入门主题_WordPress播客入门指南
  10. 华为云服务器测试并用docker快速搭建2048网站
  11. java常用英语单词大全
  12. 视频播放(iOS开发)
  13. LookupError: Resource omw-1.4 not found. nltk3.7查找近反义词解决方法
  14. JDBC增删改查练习案例
  15. android实现发送短信的功能
  16. P1162 填图颜色 洛谷(BFS的简单应用)
  17. 微信开发获取地理位置实例(java,非常详细,附工程源码)
  18. 什么是Hbuilder?
  19. CheckBox设置不可点击
  20. 17joys后台代码-初步搭建

热门文章

  1. 如何在生产环境使用Btrace进行调试
  2. Spark SQL程序操作HiveContext
  3. Java多线程(十二)之线程池深入分析(下)
  4. Okhttp3-网络请求流程解析
  5. String_boot热部署学习
  6. android studio 引入arr的问题
  7. vc 查看硬盘盘符剩余空间
  8. 【转】Linux 静态库与共享库的使用
  9. js中的墙头草---this
  10. 20款Notepad++插件下载和介绍