Web前端(11)-vue刷新网页404、登录状态页面路由处理

问题

一、登录状态路由处理

我的网页有两个页面,默认进入网站后的首页我指向了LoginView登录组件。

另一个是需要登录后才能看到的homepage页面。

现在遇到了两个问题:

1、没有登录直接将域名添加/homepage也能看到这个页面

2、已经登陆后访问网站默认域名没有跳转到/homepage,而是去到了默认的首页指向的LoginView登录页。

这明显不符合使用习惯。

二、刷新homepage页面404错误

用户已经登陆会跳转到homepage页面,但是刷新就报404,这是不正常的,正常应该是继续展示homepage页面即可。

解决方案

一、登录状态路由处理

未登陆状态如果用户想进入除了首页默认登录页以外的其他路由页面,都应该跳转回登录页面。

如果已经登陆,用户访问默认域名,则应该跳转到homepage登录后首页。

js 复制代码
router.beforeEach((to, from, next) => {
  if (to.meta.title) {
    document.title = to.meta.title;
  }
  const token = localStorage.getItem('token')
  const isLogined = token && token.trim() !== ''
  console.log("isLogined = ", isLogined + " to.path = " + to.path)
  // 统一处理路由
  if (to.path === '/' && isLogined) {
    // 如果用户已登录且访问登录页面,直接跳转到首页
    next('/homepage');
  } else if (to.path !== '/' && !isLogined) {
    // 如果没有登录就进入二级页面,都跳转到首页
    next('/')
  } else {
    next()
  }
});

二、刷新404

因为默认路由配置是使用的History模式,这种模式下每次刷新都会向服务器发送请求,服务器没有正确处理就会报404。

而hash模式会在页面路由前加上/#/,并且刷新不会向服务器发送请求,所以就不会404,所以route下的index.js改成hash模式即可。

js 复制代码
const router = createRouter({
  // history: createWebHistory(),// homepage页面刷新会404,因为history模式会向服务器发送请求,服务器没有正确处理就会报404
  history: createWebHashHistory(),
  routes
});
相关推荐
LaughingZhu5 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫5 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
小鹏linux6 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
前端若水7 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Bigger7 小时前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude
涵涵(互关)7 小时前
Naive-ui树型选择器只显示根节点
前端·ui·vue
BY组态7 小时前
Ricon组态系统最佳实践:从零开始构建物联网监控平台
前端·物联网·iot·web组态·组态
BY组态7 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·物联网·iot·web组态·组态
SoaringHeart8 小时前
Flutter进阶:OverlayEntry 插入图层管理器 NOverlayZIndexManager
前端·flutter
放下华子我只抽RuiKe58 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架