在vue框架下使用vuex和token来完成登录验证功能:

token验证实现登录功能的原理:

1.第一次点击登录功能,将输入的密码以及用户名数据传入后端。(dispatch+axios.post)

2.后端接受之后,验证数据是否存在,若存在则返回一个token值。

3.将token值保存在cookie中,执行路由跳转。(都在actions中执行,cookie.set)

4.每次路由跳转,守卫导航会判断cookie中是否有token,如果有就跳转到对应页面,如果没有则进入登录页面。(beforeEach)

 

views/Login.vue中的onsubmit方法,将密码以及用户名数据提交到异步操作actions的Login方法中

methods: {
    onSubmit(values) {
      //console.log(values);
      this.$store.dispath("Login", values).then((res) => {
        this.$router.push("/home");
        alert("登录成功");
      });
    },
  },

在store/index.js中,Login内将传送的数据使用axios.post传送到后台获取token值,并且进行保存token,记录token状态,然后返回views/Login.vue中

进行路由跳转。

import { login } from "../../assets/api/login"
import cookie from "cookie_js"
const state = {
  token: ''
}
const getters = {
  token: state => state.token
}
const mutations = {
  SET_TOKEN(state, value) {
    state.token = value
  }
}
const actions = {
  Login({ commit }, values) {
    return new Promise((resolve, reject) => {
      login(values).then((res) => {
        cookie.set('admin', res.data.data.token)//保存token
        commit('SET_TOKEN', res.data.data.token)
        resolve()
      }).catch(err => {
        reject(err)
      })
    })
  }
}

export default {
  state,
  getters,
  mutations,
  actions
}
import axios from "axios"
export function login(values) {
  return axios.post('', values);
}

验证token功能:在main.js文件中使用路由守卫全局范围的beforeEach,路由跳转时,判断cookie中是否存在token,存在则跳转功能正在进行,

                          如果token不存在,则判断跳转的路径是否为登录页面,若不是则跳转到登录页面。

const whiteRouter = ['/login'];
//路由守卫
router.beforeEach((to, from, next) => {
  console.log(to);
  if (cookie.get('admin')) {
    next();
  } else {
    if (whiteRouter.indexOf(to.path) !== -1) {
      next();
    } else {
      next('/login');
    }
  }
})

大致的功能的如上所述,作为前端新人,花费了我两三天的时间才把这个功能的逻辑以及相关的技术理清,虽忙碌却又充实。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命不息学不止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值