首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot+Vue前后端分离,如何避免前端页面 404

首先要明确一点,前端是展示给用户看的,所有的菜单显示或者隐藏目的不是为了实现权限管理,而是为了给用户一个良好的体验(把用户没有权限的按钮隐藏起来,避免用户点击后提示 403,提高用户体验),不能依靠前端隐藏控件来实现权限管理...前端为了良好的用户体验,需要将用户不能访问的接口或者菜单隐藏起来。页面的跳转,按钮的隐藏/展示等等,统统在前端来实现。...此时,我们可以使用 Vue 中的前置路由导航守卫,来监听页面跳转,如果用户想要去一个未获授权的页面,则直接在前置路由导航守卫中将之拦截下来,重定向到登录页,或者直接就停留在当前页,不让用户跳转,也可以顺手再给用户一点点未获授权的提示信息...以 vhr 中的代码为例,我在 main.js 中定义了前置路由导航守卫: router.beforeEach((to, from, next) => { if (to.path == '/')...「注意,在动态路由匹配时,如果我们从 /user/1 切换到 /user/2 ,原有的 User 组件是不会销毁的,这也意味着组件的生命周期钩子函数不会再被调用」,那么要怎么刷新数据呢?

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    BuildAdmin19:如何使用el-popover弹出框,实现个人资料页面

    参照Buildadmin的实现,在点击头像用户名区域时,还会有个弹出框显示一些信息。头像框实现上面我其实是用了img标签实现了头像框,但是最终没有显示。...我分析了一下原因,就是头像和名称是一个整体,div的宽度和其他导航按钮一样,我设置成了一个固定值,导致没有空间显示img,所以被隐藏了。...在el-popover弹出框中,首先要与el-avatar组件实现的头像框绑定,然后定义弹出框的内容。使用el-popover预留的slot插槽即可实现。...路由信息因为我这里还没有后台,所以路由信息的json都是写死在了代码中,至于后面动态渲染路由,就和BuildAdmin是一样的流程,在之前的BuildAdmin05:如何玩转Vue路由动态加载有提到。...在这里我将个人资料这个页面的路由新增到json中。个人资料作为常规管理的菜单,在经过路由动态加载之后,会被渲染到菜单栏中。

    35610

    一劳永逸,解决基于 keep-alive 的后台多级路由缓存问题

    用过 vue-element-admin 的同学一定很清楚,路由的配置直接关系侧边栏导航菜单的展示,也得益于这种设计思路,几乎大部分后台框架都采用这个方案,当然也包括了我写的 Fantastic-admin...,而这个配置并非最终注册使用的路由,仅仅是提供侧边栏导航菜单使用,同时再生成一份用于动态注册路由的数据,图例如果没看明白的话,可以看下面两组数据。...原有的面包屑导航是通过 route.matched 可以获取到嵌套路由每一层级的信息,而当路由被处理成两级后,也就无法通过 route.matched 进行显示了,所以在处理路由数据的同时,也需要处理面包屑导航的信息...通过图片可以看到,这种方案也还是有一定的限制,就是路由被处理成二级后,多级嵌套关系不存在了,也就是不能在 Empty 里写任何代码,因为都会被忽略掉,只保留顶级和最深层的底级两个路由。...当然通过实际情况考虑,这种限制并没有大问题,因为在后台系统里,本身模块相对独立,即便侧边栏导航菜单是嵌套层级关系的,在右侧内容展示区域,几乎都是独立模块展示,无需嵌套。

    2.5K60

    七个用户体验设计小秘诀,打造最舒服的互动流程

    显而易见,如果应用程序不实用,就会对用户没有实际价值,任何人都不会有任何理由去使用它。即使应用程序实用但需要付出很多努力,所以人们就不用去学习如何使用它了。...突出显示核心操作(与用户目标直接相关),并隐藏所有辅助操作。 卸载任务 了解设计中需要用户努力的任何内容(例如,阅读文本,输入数据,作出决定),并寻找替代方案。...即使是那些熟悉所有这些规则的设计师,最终还是会创建一些让人困惑、难以操作或难以找到的菜单。 导航用户界面模式是好的可用性的捷径。...让我们看看一些例子 切换菜单 依靠菜单控件来简化移动界面(特别是在小屏幕上)是很诱人的。但是,隐藏这些菜单背后的应用程序的关键部分可能会损害使用。隐藏的导航降低了参与度,减缓探索和迷惑人。 ?...虽然将无法显示任何内容,但全屏导航模式对于简单性和连贯性很有好处。一旦用户决定要去哪里,那么你可以将整个屏幕空间用于内容。

    2.5K60

    鸿蒙Navigation知识点详解

    Navigation是路由导航的根视图容器,一般作为页面(@Entry)的根容器,包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。...导航页由标题栏(Titlebar,包含菜单栏menu)、内容区(Navigation子组件)和工具栏(Toolbar)组成,其中导航页可以通过hideNavBar属性进行隐藏,导航页不存在页面栈中,导航页和子页...子页面有两个类型,分为标准类型NavDestinationMode.STANDARD,其生命周期跟随其在NavPathStack页面栈中的位置变化而改变。...以及弹窗类型NavDestinationMode.DIALOG,此时整个NavDestination默认透明显示,弹窗类型的NavDestination显示和消失时不会影响下层标准类型的NavDestination...将页面路由的操作,放到animateTo动画闭包中,配置对应的动画参数以及关闭系统默认的转场。

    22500

    webpack+vue项目实战(二,开发管理系统主页面)

    而且首页这个菜单可以点击,执行跳转,其它两个菜单又有子菜单,点击只是一个子菜单显示与隐藏的操作。 所以,侧边栏的数据肯定是一个数组,并且是一个对象数组。...--如果有二级菜单--> 显示或隐藏 比如点击‘销售消息通知’,就触发‘销售消息通知’下面子菜单的显示或者隐藏。...3.给侧边栏写相关的一些操作 关于侧边栏的操作,比较简单,无非就是点击菜单,跳转路由,标志当前项以及菜单下面子菜单的显示与隐藏。...然后跳转路由那个没有什么可以说的了,就把url当成参数传进去而已。 2.最后,实现菜单下面子菜单的显示与隐藏。这个方法就一行代码。...运行一下,发现路由变了,当前项有标识了,子菜单的显示与隐藏也有了!原理也很简单。 ?

    1.5K11

    Web 隐藏技术:几中隐藏 Web 中的元素方法及优缺点

    在 Web 开发中出于多种原因,我们需要隐藏元素。 例如,一个按钮应该在移动中可见,而在桌面视口中隐藏。 或者,在移动设备上隐藏但要在桌面上显示的导航元素。...image.png 在上面的例子中,透明的黑色区域有clip-path。当clip-path应用于元素时,透明黑色区域下的任何内容都不会显示。 为了更直观地演示以上内容,我将使用clippy工具。...使用opacity: 0不会隐藏可访问性树的导航。即使导航在视觉上是隐藏的,它仍然可以通过键盘聚焦,并且可以被屏幕阅读器访问。必须将其隐藏以避免混淆用户。...在我们的例子中,导航列表在那里,而它在视觉上是隐藏的。...我们需要解决两个问题: 1.菜单隐藏时避免用键盘聚焦 2.当导航隐藏时,避免通过屏幕阅读器告知导航 下面的屏幕截图显示了Mac OS上的VoiceOver转子是如何看到页面的。

    5.1K30

    9种最经典的导航模式,APP开发必备

    2、顶部标签导航 顶部导航在ios app中一般用作二级导航,在andriod app中这种导航模式一般用作一级导航,但自从谷歌推出”抽屉式导航“以后,顶部标签导航一般就用作二级导航,当内容分类较多的时候一般采用顶部标签导航设计模式...四、下拉式导航 和抽屉式导航类似,下拉式导航也是隐藏次要入口的一种形式,一般位于产品顶部,点击呼出导航菜单,导航的菜单以浮层的形式位于界面上层,通过点击导航菜单以外的区域使其收起,下拉式导航的面积一般较小...五、宫格导航 宫格导航主要将入口全部集中在主页面中,各个入口之间相互独立,没有太多的交集,无法跳转互通。 ?...六、列表导航 列表导航是现有app中一种主要的信息承载模式,列表导航和宫格导航类似,属于二级导航,只不过有时候列表导航太长,不利于用户操作的时候才会采用宫格导航,通常不会展示任何实质功能。 ?...缺点:隐藏了功能,且隐藏功能不能太多,不然显示后,用户较难反应。 九、轮播导航 app首页的banner广告位就是采用轮播导航,当应用信息足够扁平的时候则采用轮播导航。 ?

    4K90

    前端开发者常见的英文单词汇总

    导航类 导航:nav 标题:title 摘要:summary 菜单:menu 子菜单:submenu 主导航:mainbav 子导航:subnav 顶导航:topnav 边导航:sidebar 左导航:...leftsidebar 右导航:rightsidebar 页面结构布局 容器:container 页头:header 内容:content/container 页尾:footer 导航:nav 侧栏:sidebar...:hidden 显示:visible 溢出:overflow 列表:list 样式 style 导航:nav 显示类型:display 广告图片:banner 页眉:header 文件命名 主要的:master...layout 主题:themes 专栏:columns 文字:font 表单:forms 补丁:mend 打印:print 混入:mixins 组件:components 静态资源:public/static 路由...可见度 table 表格 thead 表头 tbody 表格内容 tr (table row) 行 td/th (table data, table headline)列 rowspan 合并行 colspan

    2.7K21

    后台管理系统 – 权限设计

    2、导航菜单的处理 一般来说后台管理系统都会有个导航菜单,以侧边栏导航居多,对于用户来说这个也是所有页面的访问入口,所以导航菜单需要根据用户权限动态展示。...建议将所有路由配置信息存储在一个配置数组中,导航菜单就根据路由配置数组来动态生成,同时判断权限做筛选。...自定义的数据都放这里面 title: '首页', // 菜单标题 accessId: 10000, // 权限id hideMenu: false, // 是否在侧边栏隐藏当前路由菜单...导航菜单动态生成一定程度上限制了用户访问无权限的路由,但还不够,用户如果跳转一个没有权限的路由,或者在地址栏手动输入没有权限的路由网址,也是能访问页面,这就需要处理。...每一个需要控制的操作区域dom都给分配一个权限id,然后判断该用户是否具有该权限,控制该区域dom的显示隐藏。 后端也只需要把所有页面权限id和按钮级别的权限id都一箩筐给到前端就行。

    4.2K40

    用Spring Boot+Vue做微人事项目第八天

    第四天做了Home页的Title制作和下拉菜单,下拉菜单有三个选项,个人中心、设置和注销登录,还做了注销登录,点击注销登录会出现提示:“此操作将注销登录,是否继续”,点是就重新跳转到登录页面,第五天做的是左边的导航菜单...首先要明确一点,前端是展示给用户看的,所有的菜单显示或者隐藏目的不是为了实现权限管理,而是为了给用户一个良好的体验,不能依靠前端隐藏控件来实现权限管理,即数据安全不能依靠前端。...所以,真正的数据安全管理是在后端实现的,后端在接口设计的过程中,就要确保每一个接口都是在满足某种权限的基础上才能访问,也就是说,不怕将后端数据接口地址暴露出来,即使暴露出来,只要你没有相应的角色,也是访问不了的...此时,如果没有做任何额外的处理的话,用户确实可以通过直接输入某一个路径进入到系统中的某一个页面中,但是,不用担心数据泄露问题,因为没有相关的角色,就无法访问相关的接口。...但是,如果用户非这样操作,进入到一个空白的页面,用户体验不好,此时,我们可以使用 Vue 中的前置路由导航守卫,来监听页面跳转,如果用户想要去一个未获授权的页面,则直接在前置路由导航守卫中将之拦截下来,

    42130

    Confluence 6 对一个空间进行归档后产生的影响

    空间 如果一个空间被归档: 将不会在查找结果中显示,除非你选择 在归档空间中查找(Search archived spaces)。如果没有归档空间的话,这个功能是隐藏的。...页面和内容将不会在 Confluence 的内容 快速查找(quick search)中显示,这个被用来在你在查找输入框中输入文字中下拉显示。 将不会显示在 空间(Spaces ) 的下拉菜单中。...在 空间目录(Space Directory)中,归档空间将不会显示在基本的空间列表中,归档的空间将会在 归档空间(archived spaces)标签页中显示。...归档空间会在分类标签中显示,这个根据标签的不同而不同。 更新归档空间的内容将不会显示在活动流(activity streams)中,例如首页面板中显示的最新的更新。 不会显示在你的面板中。 ?...当你在一个归档空间中查看(view )页面,那么这个页面将会显示在: 快速搜索导航 近期查看的页面(Recently viewed pages)菜单中。

    50930

    【Vue Router】018-等待导航结果*

    想象一下,我们有一个移动手机菜单,它允许我们进入不同的页面,而我们只想在导航到新页面后隐藏菜单,我们可能想这样做: router.push('/my-profile') this.isMenuOpen...总共有三种不同的类型: aborted:在导航守卫中返回 false 中断了本次导航。 cancelled: 在当前导航还没有完成之前又有了一个新的导航。...比如,在等待导航守卫的过程中又调用了 router.push。 duplicated:导航被阻止,因为我们已经在目标位置了。...1.18.5 检测重定向 当在导航守卫中返回一个新的位置时,我们会触发一个新的导航,覆盖正在进行的导航。与其他返回值不同的是,重定向不会阻止导航,而是创建一个新的导航。...) { // redirectedFrom 是解析出的路由地址,就像导航守卫中的 to和 from }

    7800

    Vue3 中如何加载动态菜单?

    vue 中的导航守卫就类似一个监控,它可以监控到所有的页面跳转,在页面跳转中,我们可以去判断一下 vuex 中的菜单数据是否还在,如果还在,就说明用户是点击了页面上的菜单按钮完成了跳转的,如果不在,就说明用户是点击了浏览器的刷新按钮或者是按了...小伙伴们知道,单页面项目的入口是 main.js,路由加载的内容在 src/permission.js 文件中,该文件在 main.js 中被引入,src/permission.js 中的前置导航守卫内容如下...,渲染的时候是不会被渲染出来的。...topbarRouters: 这个是用在 TopNav 组件中,这个是将系统的一级菜单在头部显示出来的,如下图: 一级菜单在顶部显示,左边显示的都是二级三级菜单,那么顶部菜单的渲染,用的就是这个 topbarRouters...generateRoutes 方法最终会返回 rewriteRoutes 变量到前面说的那个前置导航守卫中,最终前置导航守卫将数据添加到 router 中。

    2.2K10

    Vue | vue-router基础

    实质上最终都会渲染成 a 标签, to 属性 等价 a 标签的href 属性 (to无需#) router-link提供了声明式导航高亮的功能 (实现切换 active-class 可设置高亮样式) 路由组件一般存放在...pages 文件夹中,一般组件通常存放在components 文件夹中 通过切换,"隐藏"的路由组件,默认是被销毁的,需要的时候再去挂载 每个组件都有自己的$route 属性,里面存储着自己的路由信息...// 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题...: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限 meta : { noCache: true, // 如果设置为true,则不会被 缓存.../icons/svg breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: '/system/user',

    1.5K30

    安卓软件开发:使用Jetpack Compose实现DrawerMenuApp

    一、项目背景 在现代应用中,导航是关键元素,特别是使用侧边栏(Drawer Menu)切换不同页面的场景。...在 Jetpack Compose 中,使用 ModalNavigationDrawer 组件构建 Drawer 菜单,根据用户操作动态显示或隐藏菜单。...在点击菜单项时,会关闭抽屉并切换到对应的页面内容。 2.5 定义Drawer菜单项内容 DrawerContent 负责展示菜单项内容。...(3) 适用场景: • 比如一个购物应用中的导航栏,当用户点击左上角的菜单按钮时,抽屉滑出,显示购物车、收藏夹、账户信息等。 二....• 这种 Drawer 不会挡住主屏幕内容,而是始终内容排显示 (3) 适用场景: • 比如在邮件应用中,你可以看到左边有固定的邮箱文件夹列表,右边是邮件内容。文件夹导航不会随着用户操作消失。

    58850

    最新iOS设计规范五|3大界面要素:控件(Controls)

    系统按钮 系统按钮通常出现在导航栏和工具栏中,也可以在任何地方使用。 ? 在标题中使用动词。特定于操作的标题显示按钮是交互式的,并说明单击该按钮时会发生什么。 使用标题格式命名标题。...页面控件显示在屏幕底部的中心。页面控件应始终位于内容底部和屏幕底部之间的区域,并保持居中。这样即能让页面控件是可见,又不会遮挡其他内容。...进度条非常适合显示任务的状态,尤其是当它帮助传达任务需要完成多长时间时。 在导航栏和工具栏中隐藏轨道的未填充部分。默认情况下,进度条的轨道包含已填充和未填充的部分。...菜单可以快速生成动画,并且在菜单出现时不会使屏幕变暗,从而使过渡效果和总体体验更加轻盈。 ? 不要将所有操作都放在菜单中。...菜单可让您提供一系列项目,而不会弄乱您的界面,但是将所有操作置于菜单中意味着用户必须至少点击两次才能执行任何操作。将最重要的操作放在主界面中,使用菜单提供补充项目。 使用菜单显示与操作直接相关的选项。

    8.6K30

    手把手教你用vuepress搭建自己的网站(2)

    页面具体内容配置 基本配置 要让你的网站显示内容, 就需要进行配置, 需要在.vuepress文件夹下新建一个总的配置文件config.js, 这个文件的名字是固定的,即.vuepress/config.js...当然,您现在看到的页面是一片空白,那是因为docs根目录下的README.md中没有任何内容,但现在至少不是 404 了,离曙光又近了一步 设置封面启动页 有时候,当别人进入您的网站时,设置一个启动页...其中导航栏的链接分为三种:一级 nav,链接,二级下拉菜单,带标题的多级分类菜单 一级 nav,直接带路由即可 themeConfig: { nav: [ { text: '首页', link...如果想 nav 二级下拉菜单,如下配置,link的属性值带有链接,会直接是链接,若不是那就是路由,在vuepress中提供了一个items属性,配置二级导航如下所示 themeConfig:{ nav..., 就和官网一样, 点击导航中的哪个 nav,对应就显示对应的的侧边栏,目前目录有 fontend \ interview \ minprogram 等, 这些目录下都存放着多个 md文件,就是我们写的具体的文章

    2.6K20
    领券