跳转至

管理用户#

约 501 个字 预计阅读时间 10 分钟

我大学的一位同事厨艺相当不错。他不是高档餐厅的厨师,但对烹饪充满热情。有一天,在一次讨论中分享想法时,我问他是如何记住那么多食谱的。他告诉我,这很简单。你不需要记住整个食谱,只要记住基本食材如何搭配就行了。这就像一些现实世界的契约,告诉你什么可以混合,什么不应该混合。然后对于每个食谱,你只需要记住一些小技巧。

这种类比类似于架构的运作方式。在任何稳健的框架中,我们使用契约来将框架的实现与其上构建的应用程序解耦。在 Java 中,我们使用接口来定义契约。程序员就像厨师,了解各种材料如何协同工作,从而选择最合适的实现。程序员了解框架的抽象,并利用这些抽象与框架进行集成。

本章将详细介绍您在第2章的第一个示例中遇到的一个基本角色——UserDetailsService。除了UserDetailsService,我们还将讨论以下接口(契约):

  • UserDetails,用于描述 Spring Security 的用户。
  • GrantedAuthority,允许我们定义用户可以执行的操作。
  • UserDetailsManager,扩展了 UserDetailsService 的契约。除了继承的行为外,它还描述了创建用户以及修改或删除用户密码等操作。

从第二章开始,您已经对UserDetailsServicePasswordEncoder在认证过程中所扮演的角色有了一定的了解。但我们只讨论了如何插入您自定义的实例,而不是使用Spring Boot配置的默认实例。我们还有更多细节需要讨论,例如:

  • Spring Security 提供的实现及其使用方法
  • 如何定义合约的自定义实现以及何时进行
  • 在实际应用中实现接口的方法
  • 使用这些接口的最佳实践

评论