nuxt 登录获取tonken

nuxt.config.js配置

 modules: [
    'cookie-universal-nuxt',
  ],
store目录新建index.js
export const state = {
    token:''
}
export const mutations = {
 setToken(state,token){
    state.token = token;
    this.$cookies.set('token',token)
 },
 getToken(state){
    state.token = this.$cookies.get('token');
 }
}
login.vue
<template>
  <div>
    账号:<input v-model="username" placeholder="请输入内容">
    密码:<input v-model="password" placeholder="请输入内容">
    <button @click='login'>信息按钮</button>
  </div>
</template>

<script>
import {mapMutations} from 'vuex'
export default{
  data(){
    return {
      username:'',
      password:''
    }
  },
  methods:{
    ...mapMutations(['setToken']),
    login(){
      let data = {
        username : this.username,
        password : this.password,
        loginType : 2
      }
      this.$axios({
        url:'/api/user/login',
        method:'post',
        data
      }).then(res => {
       this.setToken(res.data.accessToken)//获取Token
        this.$router.push({name:'index'})     
      })
    }
  }
}
</script>
判断其他页面是否登录有token,如果没有,则调到登录页面

增加一个中间件 新增middleware目录增加一个auth.js文件

<script>
export default{
  middleware:'auth',
}
</script>
middleware目录下auth.js
export default function({store,route,redirect,params,query}){
    store.commit('getToken')
    if(!store.state.token){//如果没有获取到token则转向另一个页面
        redirect('/login');//改变方向redirect
    }
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值