9.2 选择查询用户详细信息的服务

假如你计划去一个独家经营的饭店享受一顿晚餐,当然,你会提前几周预订,保证到时候能有一个位置。当到达饭店的时候,你会告诉服务员你的名字。但令人遗憾的是,里面并没有你的预订记录。美好的夜晚眼看就要泡汤了。但是没有人会如此轻易地放弃,你会要求服务员再次确认预订名单。此时,事情变得有些怪异了。

服务员说没有预订名单。你的名字不在名单上 —— 名单上没有任何人 —— 因为根本就不存在这么个名单。这就解释了为什么位置是空的,但我们却进不去。几周后,我们也就明白这家饭店为何最终会关门大吉,被一家墨西哥美食店所代替。

这也是此时我们应用程序的现状。我们没有办法进入应用,即便用户认为他们应该能够登录进去,但实际上却没有允许他们访问应用的数据记录。因为缺少用户存储,现在的应用程序太封闭了,变得不可用。

我们所需要的是用户存储,也就是用户名、密码以及其他信息存储的地方,在进行认证决策的时候,会对其进行检索。

好消息是,Spring Security 非常灵活,能够基于各种数据存储来认证用 户。它内置了多种常见的用户存储场景,如内存、关系型数据库以及 LDAP。但我们也可以编写并插入自定义的用户存储实现。

借助 Spring Security 的 Java 配置,我们能够很容易地配置一个或多个数据存储方案。那我们就从最简单的开始:在内存中维护用户存储。