Halo 中实现用户密码的自定义校验扩展

基于 Halo 本身提供了用户密码额外校验实现,基于 UsernamePasswordAuthenticationManager 实现用户账号密码信息的校验。这样我们就可以实现如 LDAP 的用户密码校验

源码分析

UsernamePasswordAuthenticator.java 认证验证类指定验证管理器

UsernamePasswordDelegatingAuthenticationManager.java提供一个 UsernamePasswordAuthenticationManager 的扩展点,如果扩展点返回的 MonoEmpty 则使用 Halo 本身的认证逻辑

认证实现

在插件中实现 UsernamePasswordAuthenticationManager 通过以下代码获取到用户的账号密码结合业务自身的逻辑返回对应的Authentication即可,如果有异常需要基于AuthenticationException进行抛出。