当前位置:首页 > JavaScript

js实现强制登录

2026-03-15 14:35:14JavaScript

实现强制登录的 JavaScript 方法

在 Web 应用中实现强制登录功能,通常需要结合前端路由拦截、权限验证和后端接口校验。以下是几种常见的方法:

路由拦截

使用前端框架(如 Vue、React)的路由守卫功能,在用户访问受限页面时检查登录状态:

js实现强制登录

// Vue Router 示例
router.beforeEach((to, from, next) => {
  const isAuthenticated = checkAuthStatus() // 检查登录状态的方法
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

本地存储检查

通过检查 localStorage 或 sessionStorage 中存储的 token 判断登录状态:

function checkAuthStatus() {
  return !!localStorage.getItem('authToken')
}

if (!checkAuthStatus() && !isLoginPage()) {
  window.location.href = '/login'
}

全局请求拦截

使用 axios 等 HTTP 库设置请求拦截器,当后端返回 401 状态码时跳转登录页:

js实现强制登录

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      window.location.href = '/login?redirect=' + encodeURIComponent(window.location.pathname)
    }
    return Promise.reject(error)
  }
)

定时检查登录状态

设置定时器定期检查登录状态,防止 token 过期后用户仍停留在页面:

setInterval(() => {
  if (!checkAuthStatus()) {
    alert('会话已过期,请重新登录')
    window.location.href = '/login'
  }
}, 300000) // 每5分钟检查一次

关键页面保护

对敏感操作(如支付页面)添加额外的保护层:

document.addEventListener('DOMContentLoaded', () => {
  if (!checkAuthStatus()) {
    document.body.innerHTML = '<div class="login-redirect">请先登录</div>'
    setTimeout(() => {
      window.location.href = '/login'
    }, 2000)
  }
})

注意事项

  • 所有前端验证都需配合后端验证,仅前端验证不安全
  • 敏感操作应使用 HTTPS 协议确保传输安全
  • 考虑实现 token 刷新机制避免频繁跳转登录页
  • 登录后应妥善处理重定向逻辑,提升用户体验

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…