面试题答案
一键面试常见生成机制
- 基于时间戳和随机数:结合当前时间戳与随机数生成唯一标识。例如,将精确到毫秒的时间戳与一段足够长度的随机字符串拼接,这样既保证了一定的唯一性,又能利用时间戳特性做过期判断。
- 使用UUID:UUID(通用唯一识别码)有多种版本,如UUID1基于时间戳和MAC地址,UUID4则完全随机。在微服务中,可直接调用UUID生成方法来获得一次性Token,其生成的ID具有全球唯一性。
- 哈希算法:将用户标识、时间戳等信息通过哈希算法(如SHA - 256)生成固定长度的哈希值作为Token。比如将用户ID、当前时间和一个盐值组合后进行哈希计算,这样能保证相同输入得到相同输出且难以逆向推导,同时盐值增加安全性。
主要组件与技术点
- Spring Security:它提供了安全框架,在生成Token过程中,可用于权限校验等安全控制。例如,只有通过特定权限验证的用户请求,才允许生成一次性Token。
- JWT(JSON Web Token):这是一种常用的在网络应用间安全传输信息的方式。JWT由三部分组成:Header(头部)、Payload(负载)、Signature(签名)。生成Token时,可将用户相关信息放入Payload,通过指定算法对Header、Payload和密钥进行签名生成最终Token。在微服务间传递时,可通过验证签名来确认Token的合法性。
- Redis:常作为缓存存储Token。生成Token后,将其存储到Redis中,并设置过期时间。当使用Token进行验证时,先从Redis中查询该Token是否存在且未过期,从而提高验证效率并实现Token的有效期控制。同时,利用Redis的分布式特性,在多实例微服务环境下也能统一管理Token。