【问题标题】:Using JdbcUserDetailsManager vs own UserDetailsService使用 JdbcUserDetailsManager 与自己的 UserDetailsS​​ervice
【发布时间】:2013-04-25 12:04:57
【问题描述】:

我正在学习 Spring Security,但我不完全了解是否应该使用 JdbcUserDetailsManagerUserDetailsService 的自定义实现。我正在使用数据库来存储用户。

我不明白JdbcUserDetailsManager 为您提供了什么,除了很多我不确定我想使用的方法吗?如果您有验证等怎么办?您是否将其包装在自己的 UserDetailsService 实现中?

我的意思是,你会在你的应用程序中泄露这个管理器类吗?自己创建更好吗?

【问题讨论】:

    标签: java spring jakarta-ee spring-security


    【解决方案1】:

    有一些区别:

    1. UserDetailsService是加载用户详情的核心接口,供DaoAuthenticationProvider使用。
    2. UserDetailsService 有一个子接口,定义了对用户抽象的 CRUD 操作:UserDetailsManager
    3. JdbcDaoImplUserDetailsService 的 JDBC 实现。
    4. JdbcUserDetailsManagerUserDetailsManager 的 JDBC 实现和 JdbcDaoImpl 的扩展。它还提供了接口GroupManager

    基于差异,它可能会影响您决定使用、公开、包装甚至实现哪个。

    【讨论】:

    • 好吧,所以我猜 JdbcUserDetailsManager 也有检查密码等的逻辑? UserDetailsS​​ervice 没有哪个简单的实现?
    • 我相信看看AbstractUserDetailsAuthenticationProviderDaoAuthenticationProvider 会很好。凭据的实际检查发生在这两个类中。
    • 但是,JdbcDaoImpl 怎么能用作身份验证提供程序呢?我看不到它在哪里实现了接口?
    • 认证不是 JdbcDaoImpl 的责任。有一种方法DaAuthenticationProvider#setUserDetailsService,这就是它们在身份验证过程中的粘合方式。
    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 2012-12-13
    • 2011-06-27
    • 1970-01-01
    • 2012-06-11
    • 2019-06-01
    • 2013-02-11
    • 2017-09-07
    相关资源
    最近更新 更多