前端/移动开发面试题更新 2026-08-05

请说明在 Express 框架下,用户登录认证与权限控制(授权)分别可以通过哪些方式实现,并阐述其核心原理与常见实现要点。

前端/移动开发安全意识技术原理方案权衡ExpressJWTNode.js

考察说明

考查对 Express 中认证与会话管理、授权控制机制的理解与实战掌握程度。

回答思路

  1. 【回答框架 1】认证用于确认身份,常用方案有 Session-Cookie 与 Token(如 JWT)。Session-Cookie 依赖服务端存储会话状态,通过 Cookie 传递 sessionId,适合传统 Web 应用;JWT 则将用户信息签名后发给客户端,服务端无状态,适合 API 或分布式场景。
  2. 【回答框架 2】在 Express 中,可通过中间件实现认证逻辑。例如使用 express-session 管理 Session,配合 Passport.js 策略(如 LocalStrategy)处理登录验证;或使用 jsonwebtoken 签发与校验 JWT,在请求头 Authorization 中携带 Bearer Token,并由自定义中间件解析并挂载用户信息到 req 对象。
  3. 【回答框架 3】授权用于控制资源访问权限,需在认证通过后判断用户角色或权限。常见做法包括:在路由处理前添加授权中间件,检查 req.user 中的角色是否匹配所需权限,不匹配则返回 403;或使用 ACL/RBAC 模型,将权限映射到角色,可借助 express-acl、casbin 等库简化实现。
  4. 【关键点 1】认证关注身份验证,授权关注权限控制,两者需配合使用。
  5. 【关键点 2】Session-Cookie 与 JWT 各有优劣:Session 有状态易吊销,JWT 无状态利于扩展但难主动失效。
  6. 【关键点 3】认证中间件应统一校验身份,授权中间件按角色或权限拦截请求。
  7. 【易错点 1】JWT 一旦签发在过期前无法主动失效,处理注销或权限变更时需额外方案(如黑名单)。
  8. 【易错点 2】将敏感数据放入 JWT 或 Cookie 可能导致信息泄露,需注意加密与存储。
  9. 【易错点 3】仅靠前端隐藏按钮实现授权并不可靠,必须后端强制校验。