有人可以帮我解释我们应该使用AuthenticationProvider
的情况/用例,以及我们应该使用AbstractUserDetailsAuthenticationProvider
的位置。
答案 0 :(得分:1)
AbstractUserDetailsAuthenticationProvider是一个抽象类,它实现了AuthenticationProvider。因此,它已经提供了许多开箱即用的功能,因为您必须自己实现AuthenticationProvider的功能。
当您拥有包含用户信息的存储库时,抽象类很有趣,然后它允许您从此类获取此信息。另一方面,假设您需要一个与此非常不同的逻辑,而不是您需要实现AuthenticationProvider。
您可以在此处找到javadoc http://docs.spring.io/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider.html和http://docs.spring.io/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/authentication/AuthenticationProvider.html
答案 1 :(得分:0)
AuthenticationProvider
只是界面。 AbstractUserDetailsAuthenticationProvider
是使用UsernamePaswordAuthenticationToken
实例的基类,这是一个常见的用例。
答案 2 :(得分:0)
您无法实例化抽象类的实例。抽象类只是 - 抽象。 AuthenticationProvider是AbstractUserDetailsAuthenticationProvider实现的接口。
有关Java中的接口和抽象类的更多信息,请查看 - http://docs.oracle.com/javase/tutorial/java/concepts/interface.html http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html