当前位置:首页 > JavaScript

js实现强制登录

2026-02-02 14:22:45JavaScript

实现强制登录的 JavaScript 方法

检查登录状态

通过检查本地存储(localStorage)或会话存储(sessionStorage)中的登录凭证来判断用户是否已登录。若未登录,则跳转到登录页面。

if (!localStorage.getItem('authToken')) {
  window.location.href = '/login.html';
}

路由拦截

在单页应用(SPA)中,可以通过路由守卫拦截未登录的访问请求。使用框架如 Vue Router 或 React Router 实现。

// Vue Router 示例
router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('authToken');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

后端验证

前端发送请求时,后端应验证用户凭证的有效性。若凭证无效,返回 401 状态码,前端据此跳转到登录页面。

fetch('/api/protected', {
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('authToken')}`
  }
}).then(response => {
  if (response.status === 401) {
    window.location.href = '/login.html';
  }
});

定时检查会话

设置定时器定期检查会话是否过期,避免用户长时间未操作导致会话失效。

setInterval(() => {
  fetch('/api/check-session', {
    headers: {
      'Authorization': `Bearer ${localStorage.getItem('authToken')}`
    }
  }).then(response => {
    if (response.status === 401) {
      window.location.href = '/login.html';
    }
  });
}, 300000); // 每5分钟检查一次

全局错误处理

通过全局错误处理捕获未授权的请求,统一跳转到登录页面。

js实现强制登录

window.addEventListener('unhandledrejection', event => {
  if (event.reason.status === 401) {
    window.location.href = '/login.html';
  }
});

注意事项

  • 敏感操作应结合后端验证,仅依赖前端验证不安全。
  • 登录凭证建议使用 HttpOnly 的 Cookie 存储,避免 XSS 攻击。
  • 跳转登录页时,可携带当前页面 URL 作为参数,登录后自动跳回原页面。

标签: js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…