在云图库项目里,登录模块你是怎么设计和实现的?包括前端交互、后端校验以及会话保持等环节。
考察说明
考查候选人对常见登录功能全链路的理解与实际落地能力,涉及安全、状态管理和前后端协作。
回答思路
- 【回答框架 1】登录功能通常采用前后端分离设计:前端负责收集凭证并提交,后端负责校验与签发会话凭证。前端一般用表单或第三方登录组件,通过 HTTPS 发送用户名与密码,避免明文传输。
- 【回答框架 2】后端常见方案是使用 Session 或 JWT。Session 依赖服务端存储,适合传统单体应用;JWT 无状态,适合分布式或移动端。选择时需考虑扩展性和登出、失效等场景。
- 【回答框架 3】密码存储必须采用哈希加盐,例如 bcrypt 或 PBKDF2,绝不能明文或简单 MD5。登录成功后,应生成会话令牌并设置合理的过期时间,同时考虑续期与刷新机制。
- 【回答框架 4】安全方面需防止暴力破解,常见措施包括验证码、登录失败次数限制、IP 限流等。同时要防止 SQL 注入和 XSS,输入校验必不可少。
- 【回答框架 5】实际项目中,我会先梳理用户表结构,设计接口如登录、登出、获取当前用户信息;再实现中间件或拦截器校验令牌,最后用测试覆盖正常与异常流程。若涉及第三方登录,需额外处理 OAuth 流程。
- 【关键点 1】密码必须加盐哈希存储,推荐 bcrypt;传输使用 HTTPS 或加签。
- 【关键点 2】会话管理可选择 Session 或 JWT,并明确其失效与续期策略。
- 【关键点 3】登录接口应有防暴力破解机制,如失败锁定和验证码。
- 【关键点 4】前端需妥善处理令牌存储(如 localStorage 但有 XSS 风险,HttpOnly Cookie 更安全)。
- 【关键点 5】登录状态校验应放在网关或后端中间件,前端不能仅靠路由守卫。
- 【易错点 1】仅用 token 就认为登录完成,忽略 token 在服务端的校验与过期处理。
- 【易错点 2】将密码明文存库或使用弱哈希如 MD5、SHA1 无加盐。
- 【易错点 3】会话令牌不设过期时间或无限续期,导致长期有效被滥用。