使用vue进行登录后路由跳转处理

news/2024/5/18 14:44:28 标签: vue, jwt, session, cookie

接上文登录页面编写

登录成功后在components文件夹下新建Home.vue:

<template>
  <div>
    Home组件
  </div>
</template>

<script>
  export default {
    name: "Home"
  }
</script>

<style lang="less" scoped>

</style>

router文件夹下index.js修改为:

import Vue from 'vue'
import VueRouter from 'vue-router'

import login from "../components/login";
import home from "../components/Home"

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    redirect:'/login'
  },
  {
    path:'/login',
    component:login
  },
  {
    path:'/home',
    component:home
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

login.vue的methods下的Login方法修改为:

 Login() {
        // 预验证
        this.$refs.loginFormRef.validate(async valid => {
          //未验证通过则直接return
          if (!valid) return;
          //不加await的化不会打印出数据,await只能用于async修饰的函数
          // const {data:res} = await this.$http.post('pro/login', this.loginForm).catch(() => this.$message.error("登录失败,请联系Tel:"))
          const response = await this.$http.post('pro/login', this.loginForm).catch(() => this.$message.error("登录失败,请联系Tel:"))
          // {data:res}解构,将得到的返回值的data解构为res
          console.log(response.data)
          // console.log(res.meta.statusText)
          //从res的元数据中得到返回状态
          if (response.status !== 200) return;
          if (response.data.token) {
            // 1,将登录成功之后的token,保存到客户端的sessionStorage(会话存储)中
            // 1.1 项目中除了登录之外的其他API接口,必须在登录之后才能访问
            // 1.2 token只应在当前网站打开期间生效,所以token保存在sessionStorage中

            // 2,通过编程式导航跳转到后台主页。路由地址是 /home
            console.log(response.data.token);
            window.sessionStorage.setItem('token', response.data.token);
            await this.$router.push("/home");
            return this.$message.success("登录成功");
          };
          if (response.data.error) return this.$message.error(response.data.error);
        });
      },

运行,输入账号密码后登录:
在这里插入图片描述可见成功跳转
在这里插入图片描述token已成功存储在sessionStorage(会话存储)中

下一步:
使用导航守卫,根据sessionStorage中是否有token判断登录与否


http://www.niftyadmin.cn/n/1799044.html

相关文章

超级有用的git reset --hard和git revert命令

2019独角兽企业重金招聘Python工程师标准>>> git误操作时可以用git reset --hard 去撤销这次修改&#xff0c; 但是这样做也有问题&#xff0c;可能在之前本地有没有提交的修改也都消失了&#xff0c;这种情况下&#xff0c;可以尝试git revert命令。 一 git reset的…

使用vue路由导航守卫判断登录状态决定是否跳转

在router下的index.js的最最后面export default router前写入 //挂载路由导航守卫 router.beforeEach((to,from,next)>{// to 将要访问的路径// from 代表从哪一个路径跳转而来// next 是一个函数&#xff0c;表示放行// next() 放行 next(/login) 跳转if (to.path /login…

translate old poem

不知吾道无言无行&#xff0c;而即有言有行者求道&#xff0c;忽遇异物&#xff0c;横执为道&#xff0c;殊不知舍源求流&#xff0c;无时得源&#xff0c;舍本就末&#xff0c;无时得本。 ——《文始真經》 Ordinary people are not able to make sense of dao. Dao cant not…

退出功能实现

因为我们是基于token实现登录&#xff0c;后续的请求没有携带token就会强制跳转到登录页面&#xff0c;所以实现退出功能&#xff0c;只需销毁本地存储的token即可 将components下的Home.vue修改为&#xff1a; <template><div><el-button type"info"…

netbeans增加yii的代码提示

在NetBeans中创建PHP项目 NetBeans目前还没有直接支持Yii Framework或Yii相关的插件&#xff0c;但是可以通过其他方式来实现Yii的代码自动提示。 首先&#xff0c;打开新建项目向导&#xff0c;创建一个“基于现有源代码的PHP应用程序”。 在向导中把源文件夹指向已创建好的yi…

axios拦截器使用

main.js中axios部分加入&#xff1a; // 请求拦截器 axios.interceptors.request.use(config >{console.log(config)/*为请求头对象添加Token验证的Authorization对象&#xff0c;就不用每次都在要传送的字段上加token了*/config.headers.Authorizationwindow.sessionStora…

获取左侧菜单

自己原本制作的接口可能不太适合此练手项目&#xff0c;将api地址替换掉 接口地址&#xff1a;https://www.liulongbin.top:8888/api/private/v1/ main.js修改 //配置axios全局使用 import axios from axios axios.defaults.baseURLhttps://www.liulongbin.top:8888/api/priva…

新学C#线程使用总结

这两天在项目上需要使用多线程技术&#xff0c;研究了半天&#xff0c;碰到了一些问题&#xff0c;现在简要总结下。 线程的使用其实很简单&#xff0c;和JAVA里面差不多&#xff0c;但是还是有很多特别的地方&#xff0c;在C#中的线程&#xff0c;如果要对非线程创建的控件进行…