【发布时间】:2021-06-01 15:11:06
【问题描述】:
我在我的项目中使用spring security,我知道提供的接口UserDetailsService就像我们编写的普通接口一样,但我想知道Spring人员提供这个接口的背后是否有任何特殊目的包含单一方法?
我观察到,我们将实现类传递给AuthenticationBuilderManager 的方法userDetailsService(),因此我们无需费心在控制器中显式调用服务。
除此之外还有其他好处吗?
【问题讨论】:
-
我们在 java 中使用接口,所以我们可以使用多态性。相同的函数名称但不同的实现。我们称之为一种方法,实现的类可以调用数据库、ldap 服务器、内存数据库或任何其他服务等。stackoverflow.com/questions/3528420/…
-
如果你阅读了 api docs.spring.io/spring-security/site/docs/current/api/org/… 你可以看到所有的实现
CachingUserDetailsService, InMemoryUserDetailsManager, JdbcDaoImpl, JdbcUserDetailsManager, LdapUserDetailsManager, LdapUserDetailsService -
我对核心概念很了解,但我的问题还是没有答案,如果我们能写服务,那么有什么特别的,那么只有Spring人给我们提供了这个接口
-
我不明白你在说什么?你是什么意思有什么特别的?
then only Spring people provides us this Interface这句话没有意义,因为它不是正确的英语。 -
我的意思是说,我们可以自己编写服务,对吧?那么为什么 Spring 社区单独提供 UserDetailsService 呢?这个界面有什么特别之处吗?
标签: spring-security