5.2.1 内存用户详情服务
用户信息可以保存在内存中。假设只有少数几个用户,这些用户都不可能改变。在这种情况下,将这些用户定义为安全配置的一部分可能非常简单。
例如,下一个清单显示了如何在内存用户存储中配置两个用户 “buzz” 和 “woody”。程序清单 5.2 在内存用户存储中定义用户
清单 5.2 在内存用户服务 bean 中声明用户
@Bean
public UserDetailsService userDetailsService(PasswordEncoder encoder) {
List<UserDetails> usersList = new ArrayList<>();
usersList.add(new User(
"buzz", encoder.encode("password"),
Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))));
usersList.add(new User(
"woody", encoder.encode("password"),
Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))));
return new InMemoryUserDetailsManager(usersList);
}
这里创建了一个 Spring Security 用户对象列表,每个对象都有用户名、密码和密码一个或多个权限列表。然后使用这个用户列表创建了 InMemoryUserDetailsManager。
如果您现在试用该应用程序,您应该能够以“woody”或“buzz”身份登录,使用“password”作为密码。
内存中的用户存储应用于测试或非常简单的应用程序时非常方便,但是它不允许对用户进行简单的编辑。如果需要添加、删除或更改用户,则必须进行必要的更改,然后重新构建、部署应用程序。
对于 Taco Cloud 应用程序,希望客户能够注册并管理自己的用户帐户。使用这种方式就不适合了。因此让我们看看另一个使用数据库支持用户存储的选项。