You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript基于sessionStorage实现导航栏角色显隐的代码问题

代码问题排查

代码共有4处核心错误,导致权限逻辑无法按预期生效:

  • 管理员判断条件语法错误:n == "username",admin 误用逗号运算符,实际判断逻辑完全失效,正确判断条件应为n === "admin"
  • 普通用户分支末尾多了无效字符a,会触发JS语法错误,导致整个脚本中断执行
  • 缺少元素显示状态重置逻辑:只处理了元素隐藏逻辑,没有在权限匹配时将对应元素设为可见,会出现状态切换后元素仍保持之前隐藏状态的问题
  • HTML标签属性书写不规范:id="admission"target 属性和属性之间缺少空格,会导致浏览器解析id属性出错
修正后可直接运行的代码

HTML部分

<a href="#" id="admission" target="_self">Admissions</a>
<a href="#" id="status" target="_self">status</a>

JavaScript部分

// 读取存储的登录用户名
const currentUser = sessionStorage.getItem("username");
// 获取导航栏两个入口元素
const admissionNav = document.getElementById("admission");
const statusNav = document.getElementById("status");

// 先重置两个入口为可见状态,清除上一次状态的隐藏残留
admissionNav.style.display = "block";
statusNav.style.display = "block";

if (currentUser === null) {
  // 未登录:两个入口全部隐藏
  admissionNav.style.display = "none";
  statusNav.style.display = "none";
} else if (currentUser === "admin") {
  // 管理员账号:隐藏status入口,保留Admissions入口
  statusNav.style.display = "none";
} else {
  // 普通用户账号:隐藏Admissions入口,保留status入口
  admissionNav.style.display = "none";
}

安全提示:前端权限控制仅用于优化界面交互,所有涉及权限的接口请求必须在服务端做二次校验,用户可手动修改sessionStorage内容绕过前端限制

内容的提问来源于stack exchange,提问作者kalai Arasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:01:25