我们如何使用 Spring Security 将用户从一个数据库迁移到另一个数据库,即时且对用户透明?
背景
我们在 Web 应用程序中使用 Spring Security 和基于表单的身份验证。我们的配置使用由用户数据库支持的标准 Spring JDBC 组件。但是,我们还有另一个来自旧系统的用户数据库,与新系统相比,它的用户数量大约是新系统的十倍。我们也希望允许旧数据库中的用户登录。对于用户来说,这应该是完全透明的。
由于旧数据库中的大多数用户不再处于活动状态,我们不想将它们全部迁移到新数据库中。出于性能原因,我们希望保持新用户数据库尽可能小,同时仍包含所有活动用户。一段时间后,我们想断开旧用户数据库,有效地删除所有非活动用户。
我们提出的想法是按需迁移用户。当不存在的用户(不在新数据库中)尝试登录时,我们要检查用户是否可以针对旧用户数据库进行身份验证,在这种情况下,将用户迁移到新数据库并自动登录。
Spring Security 框架中有很多扩展点,问题是哪些适合我们的目的?