首页 > 编程语言 >Java登陆第四十天——Router路由守卫练习

Java登陆第四十天——Router路由守卫练习

时间:2024-04-07 19:34:30浏览次数:23  
标签:vue Java home router import Router login path 路由

需求

未登录无法访问除login页面

练习

1.使用vite创建项目,导入依赖

npm create vite	选择vue+js
npm i	导入基本依赖
npm vue-router	导入路由依赖

2. 创建组件,login.vue、home.vue、list.vue

仅展示home.vue组件,其他都一样。

<script setup>

</script>

<template>
<h3>我是home.vue</h3>
</template>

<style scoped>

</style>

3. 创建src\routers\router.js,路由配置文件

import {createRouter, createWebHashHistory} from "vue-router";
import Home from '../components/home.vue'
import List from '../components/list.vue'
import Login from '../components/login.vue'

const router = createRouter({
    history: createWebHashHistory(),
    routes: [
        //定义首页
        {path: '/', component: Home},
        {path: '/home', component: Home},
        {path: '/list', component: List},
        {path: '/login', component: Login}
    ]
})

4. main.js绑定路由

import {createApp} from 'vue'
import App from './App.vue'
import router from './routers/router'

let app = createApp(App)
app.use(router)
app.mount('#app')

5. 编辑App.vue组件,测试路由效果

<script setup>
</script>

<template>
  <h3>我是app.vue</h3>
  <router-link to="/list">list</router-link>丨
  <router-link to="/home">home</router-link>丨
  <router-link to="/login">login</router-link>
  <router-view></router-view>
  <h3>app.vue尾页</h3>
</template>

<style scoped>
</style>

6. 编辑login.vue组件,测试标签效果

<script setup>
import {ref} from 'vue'

let uname = ref('');
let upwd = ref('');

function l() {
    console.log(uname.value+upwd.value);
}

function out() {
  console.log("out");
}
</script>

<template>
  <h3>我是login.vue</h3>
  用户名:<input type="text" v-model="uname">
  密码:<input type="password" v-model="upwd">
  <input type="submit" value="提交" @click="l()">
  <input type="button" value="登出" @click="out()">
</template>

<style scoped>
</style>

7. 继续编辑login.vue组件,测试window.sessionStorage对象

<script setup>
import {ref} from 'vue'

let uname = ref('');
let upwd = ref('');

function l() {
  if (uname.value === 'root' && upwd.value === '123') {
    //正确在本地session中记录
    window.sessionStorage.setItem("username", uname.value);
    window.sessionStorage.setItem("userpwd", upwd.value);
  } else {
    console.log("用户名或密码错误")
  }
}

function out() {
  //登出清空本地session
  window.sessionStorage.clear();
}

</script>

<template>
  <h3>我是login.vue</h3>
  用户名:<input type="text" v-model="uname">
  密码:<input type="password" v-model="upwd">
  <input type="submit" value="提交" @click="l()">
  <input type="button" value="登出" @click="out()">
</template>

<style scoped>
</style>

8. 编辑路由配置文件,编写路由守卫

import {createRouter, createWebHashHistory} from "vue-router";
import Home from '../components/home.vue'
import List from '../components/list.vue'
import Login from '../components/login.vue'

const router = createRouter({
    history: createWebHashHistory(),
    routes: [
        //定义首页
        {path: '/', component: Home},
        {path: '/home', component: Home},
        {path: '/list', component: List},
        {path: '/login', component: Login}
    ]
})

router.beforeEach((to, from, next) => {

    if (to.path === '/login') { //如果用户要去登录页面,放行
        next()
    } else { //如果用户不去登录页面
        let u = window.sessionStorage.getItem("username")//获取用户本地session的username值
        if (u != null) {//不为空就是已经登陆过了,放行
            next();
        } else {//为空就重定向到登录页面去
            next('/login')
        }
    }
})

router.afterEach( (to,from)=>{
    //模板字符串
    console.log(`从哪里来:${from.path},到哪里去:${to.path}`)
} )

export default router;

9. 效果展示

image

标签:vue,Java,home,router,import,Router,login,path,路由
From: https://www.cnblogs.com/rowbed/p/18119737

相关文章

  • 后端学习记录~~JavaSE篇(day03-流程控制语句-下-----循环语句)
    摘要:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。一.for循环for(初始化语句①;循环条件语句②;迭......
  • java中的栈和队列
    java中的栈和队列栈特点:先进后出插入和删除只能在一段进行(栈顶),另一端称为(栈底)插入和删除的时候时间复杂度都是最理想的O(1)java中提供了一个类:Stack,并且实现了泛型方法:empty()检测栈是否为空peek()查看头部元素,不删除pop()删除头部元素,并返回删除的元素push()将该元素......
  • Java登陆第四十天——Router路由守卫
    路由守卫就是在切换页面的期间,执行的函数。 类似于Vue的钩子函数 类似于Setvlet的Filter(过滤器)路由守卫路由守卫,就是在路由切换期间执的函数。由vue-router提供的两个常见守卫(函数):全局前置守卫beforeEach和全局后置守卫afterEach语法格式如下:/*全局前置守卫beforeEa......
  • mac 添加静态路由
    在macOS上,您可以使用`route`命令来添加一次性的静态路由。以下是配置一次性静态路由的一般步骤:1.**确定目标网络和下一跳地址:**首先,确定您要添加的静态路由的目标网络和下一跳地址。2.**使用routeadd命令添加静态路由:**打开终端,执行以下命令:```sudoroute-na......
  • Java集合常用类及使用特点
    Java集合框架提供了一组接口和类,用于存储和操作对象集合。它包括常用的数据结构,如列表、集合、映射等,以及对应的实现类。主要接口和类:List(列表):允许重复元素,按照插入顺序存储。常用实现类有ArrayList(查询快、增删慢)和LinkedList(增删快、查询慢)。ArrayListvs.LinkedList:Ar......
  • 自制小钢琴(Java)
    简易版小钢琴packagePianoGame;importjavax.swing.*;importjava.awt.*;publicclassPianoGameextendsJFrame{Buttonbutton=null;//定义两个参数,分别为宽,高publicstaticfinalintWIDTH=700;publicstaticfinalintHEIGHT=450;......
  • Java的异常机制
    异常机制三种类型检查型异常:程序员无法预见的运行时异常:在编译时会被忽略错误ERROR:错误在代码中被忽略,在编译时检查不到异常处理机制抛出异常捕获异常异常处理的五个关键字:try,catch,finally,throw,throws以下为这五个关键词的使用方法:packageexception;publicclassD......
  • 工业4g路由器联网后迅速掉线是什么原因?
    工业4G路由器连接上网后迅速掉线可能是由多种因素造成的。以下是一些建议的检查和解决步骤: 1、信号问题:信号强度:检查工业路由器信号强度指示灯,如果信号弱,尝试移动路由器位置或添加外部天线来增强信号。网络拥堵:如果路由器信号较强但仍然频繁掉线,可能是因为网络拥堵。尝试减少......
  • Java商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商
     1.涉及平台平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2.核心架构SpringCloud、SpringBoot、Mybatis、Redis3.前端框架VUE、Uniapp、Bootstrap/H5/CSS3、IOS、Android、小程序4.核心思想分布式、微服务......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
    鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要......