多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
匹配是基于`{id}`和`id`到构造函数中提供的`PasswordEncoder`的映射完成的。我们在“密码存储格式”一节中的示例提供了如何完成此操作的工作示例。默认情况下,调用`matches(CharSequence, String) `与密码和未映射的`id`(包括空id)的结果将导致IllegalArgumentException。可以使用`DelegatingPasswordEncoder.setDefaultPasswordEncoderForMatches(`PasswordEncoder)自定义此行为。 通过使用`id`我们可以匹配任何密码编码,但使用最现代的密码编码编码密码。这很重要,因为与加密不同,密码哈希的设计使得没有简单的方法来恢复明文。由于无法恢复明文,因此难以迁移密码。虽然用户很容易迁移`NoOpPasswordEncoder`,但我们默认选择将其包含在内,以便简化入门体验。