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

news/发布时间2024/5/17 11:54:10

需求

未登录无法访问除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() {//登出清空本地sessionwindow.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/88234582.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Nginx 解析漏洞复现

该漏洞与php和nginx版本无关,是配置错误导致的问题 漏洞描述 通常在nginx.conf的配置文件或者include包含的其他配置文件下有以下信息 location ~ \.php$ {fastcgi_index index.php;include fastcgi_params;fastcgi_param REDIRECT_STATUS 200;fastcgi_param SCRIPT_FILE…

阿里云服务器+NAS

什么是ECS ECS:即Elastic Compute Service 弹性计算(Elastic Computing)是一种云计算服务模型,它旨在提供灵活、自动且可伸缩的计算资源。弹性计算的关键特性包括:弹性伸缩: 用户可以根据实际需求自动调整计算资源的规模,实现按需分配和释放。这意味着在峰值时段增加资源…

uniapp 连接华为手机 usb调试 选择 音频来源

uniapp 连接华为手机 usb调试 选择 音频来源--------------------------------------------- 生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯! https://pengchenggang.gitee.io/navigator/ SMART原则:目标必须是具体的(Specific) 目标必须是可以衡…

Flask 脚本

一 集成Python Shell 作用: 一些任务更适合在shell中完成, 如后台添加超管需求、迁移数据库、定时任务等1.1 安装库 pip install flask-script 1.2 简单实现 项目目录 server.pyfrom flask import Flaskapp = Flask(__name__)@app.route(/) def hello_world():return Hello Wor…

Java项目自启动方案——jar包做成服务(Windows版本)

参考文档:https://blog.csdn.net/qiaodaima0/article/details/115266052需求:公司做的很多项目都是属于客户端—服务器形式,在客户端部分运行了属于面向用户操作的项目jar包,客户端机器就不像服务器那样,经常会遇到重启机器的情况,所以让我们的项目能自启动就是个必须的工…