vuex对于token进行存储

1.什么是token?
        token通俗的讲就是一个暗号。在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。假如我有了token,我就拥有了自己限有的权限。我的权限假如是用户身份,那我非要去访问操作管理员权限 ,那么是回被驳回的。

2.应用场景:在登录的时候保存token

因为此次项目是vue项目,所以要把值存到vuex中,使各个组件均可以访问到。

1)在store/index.js里面设置vuex

// 引入Vuex
import Vuex from 'vuex'
// 引入vue
import Vue from 'vue'
// 使用Vuex
Vue.use(Vuex)

import user from './user'
import admin from './admin'
// import message from './message'
import teacher from './teacher'

// 准备actions(操作数据之前的操作)
const actions = {}
// 准备mutations(操作数据,键值一般大写)
const mutations = {
    LOGIN: function (state, value) {

        console.log("mutations中的+被调用了", state, value);
        state.token = value.token//修改stata里面的token
        state.power=value.pow.power//修改stata里面的power
        state.userInfo=value.pow//修改stata里面的userInfo
    },
}
// 准备state(存放数据)
const state = {
    token: '',
    power: "",
    userInfo:""
}

2)通过登录获取token,进行使用

      Ulogin(data).then((data) => {
      if(data.data){
        console.log("登录", data.data);
        console.log("解析", jwt_decode(data.data));
        let inf = jwt_decode(data.data);
        if (inf.power == 0) {
          this.$router.push("user/IndexCenter");
        } else if(inf.power == 1) {
          this.$router.push("/teacher");
        }else{
        this.$router.push("/admin");
        }
        let res = {
          token: data.data,
          pow: jwt_decode(data.data),
        };
        this.$store.commit("LOGIN", res);
      }else{
      this.$message.error('密码或账户错误');
      }
      });
    },

补充:vue可以通过jwt-decode解析token获取需要的数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue和Vuex中实现Token存储,可以将Token保存在Vuex的状态管理器中,这样在整个应用程序中都可以访问到Token。下面是一个简单的示例: 1. 首先,在Vuex中创建一个module,用于存储Token: ```javascript // store/modules/auth.js const state = { token: null } const mutations = { setToken(state, token) { state.token = token } } export default { state, mutations } ``` 2. 在Vue组件中使用Vuex的mapState和mapMutations方法,将Token存储Vuex中: ```javascript // Login.vue <template> <div> <input type="text" v-model="username"> <input type="password" v-model="password"> <button @click="login">Login</button> </div> </template> <script> import { mapState, mapMutations } from 'vuex' export default { data() { return { username: '', password: '' } }, computed: { ...mapState({ token: state => state.auth.token }) }, methods: { ...mapMutations({ setToken: 'auth/setToken' }), login() { // 发送登录请求,获取Token const token = 'xxxxx' this.setToken(token) } } } </script> ``` 3. 在需要验证Token的请求中,从Vuex中获取Token: ```javascript // api.js import axios from 'axios' import store from '@/store' const api = axios.create({ baseURL: 'https://api.example.com', headers: { 'Content-Type': 'application/json' } }) api.interceptors.request.use(config => { const token = store.state.auth.token if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, error => { return Promise.reject(error) }) export default api ``` 以上是一个简单的实现方法,当然,实际应用中还需要考虑Token的过期时间和刷新等问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值