AuthenticationProvider和AbstractUserDetailsAuthenticationProvider之间的区别

时间:2013-11-22 15:48:35

标签: java spring security

有人可以帮我解释我们应该使用AuthenticationProvider的情况/用例,以及我们应该使用AbstractUserDetailsAuthenticationProvider的位置。

3 个答案:

答案 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.htmlhttp://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实现的接口。

您最有可能找到的课程是 - http://docs.spring.io/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/authentication/dao/DaoAuthenticationProvider.html

有关Java中的接口和抽象类的更多信息,请查看 - http://docs.oracle.com/javase/tutorial/java/concepts/interface.html http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html