1. 退出登录功能封装方案
前端(以 web-admin 为例,Vue3 项目)
- 清除本地 token
一般 token 保存在 localStorage 或 sessionStorage,退出时需清除。 - 重定向到登录页
退出后跳转到登录页面。 - 可选:通知后端(如有接口)
有些系统会有后端登出接口,调用后端接口使 token 失效。
示例代码(可封装为 utils/logout.ts):
// src/utils/logout.ts
export function logout() {
localStorage.removeItem('token');
sessionStorage.removeItem('token');
// 其他需要清除的本地存储
window.location.href = '/login'; // 跳转到登录页
}
在需要退出的地方调用 logout() 即可。
后端(如有 token 黑名单机制,可实现 /logout 接口)
2. 问题
问题1:你们项目的登录和退出登录流程是如何设计的?
答案:
本项目采用前后端分离架构,前端(如 web-admin)登录后会将后端返回的 token 保存在 localStorage。退出登录时,前端会清除本地 token 并跳转到登录页。后端采用 JWT 认证,部分接口会校验 token,有安全需求时可实现 token 黑名单机制,进一步提升安全性。
问题2:如何保证用户登录状态的安全性?token 如何管理?
答案:
我们采用 JWT 作为用户身份凭证,token 存储在 localStorage。每次请求时通过请求头携带 token,后端中间件统一校验。为防止 token 泄露,敏感操作建议使用 HTTPS,并设置 token 有效期,退出登录时及时清除本地 token。
问题3:前端如何实现权限控制?菜单如何动态渲染?
答案:
前端会根据用户登录后返回的权限信息(如角色、菜单列表)动态渲染侧边栏菜单(如 src/components/SideMenu.vue)。路由守卫(如 src/router/guard.ts)会在路由跳转前校验用户权限,未授权用户会被重定向到 401 或登录页。
问题4:你们项目如何防止暴力破解和恶意登录尝试?
答案:
后端实现了登录尝试记录和暴力破解防护(如 web-server/middleware/BruteForceProtection.js),对同一 IP 或账号多次失败登录进行限制,防止暴力破解。前端也有验证码机制(如 web-company/src/api/captcha.ts)提升安全性。
问题5:如何实现多端(如 web-admin、web-company)用户会话隔离?
答案:
每个端的 token 独立存储,前端通过 localStorage/sessionStorage 管理。后端根据 token 解析用户身份,确保不同端的用户数据和权限隔离。退出登录时只影响当前端的会话,不影响其他端。