gpt4 book ai didi

java - 在 user-service-ref 中使用 jdbc-user-service

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:56 24 4
gpt4 key购买 nike

我正在使用 spring security,对于基于数据库的身份验证,我使用了以下配置及其工作正常

<authentication-manager alias="authenticationManager">
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT ...... U.email_address=?"
authorities-by-username-query="SELECT ... U.email_address=?">
</authentication-provider>
</authentication-manager>

现在我想向 session 添加额外的信息,并发现 Adding user to session, spring security default login ,我尝试了一下,现在遇到了问题。

XML 说我不能组合使用 user-service-ref 和 jdbc-user-service。有没有办法解决这个问题,或者如果我必须使用 user-service-ref 标签来验证用户身份,我必须做什么?添加额外信息(例如将整个用户对象添加到 session 中)的其他方法是什么?

我们将不胜感激您的帮助。

最佳答案

经过几个小时的搜索和实验,我能够做到这一点。

  1. 创建一个新服务,例如 MyUserService,它将实现 org.springframework.security.core.userdetails.UserDetailsService并有注释@Service 。 UserDetailsS​​ervice 只有一种方法 loadUserByUserName 。该方法的实现将在 MyUserService 中。它看起来像这样。

    @服务公共(public)类 MyUserService 实现 UserDetailsS​​ervice {

    @Override
    public UserDetails loadUserByUsername(String arg0)
    throws UsernameNotFoundException {

    MyUser user=new MyUser();
    /*get details of user and authorities from database whose username is
    arg0 and place them in user instance */
    return user;
    }

    }
  2. MyUser 也是一个实现 org.springframework.security.core.userdetails.UserDetails 的新类它的所有方法都在 MyUser 类中实现。它看起来像这样。

    public class MyUser implements UserDetails {
    private static final long serialVersionUID = 1L;
    /*All the variables their getter setters that you wish to store in session. And
    implementation of all the methods of UserDetails go here.*/

    }
  3. 像这样定义一个bean <bean id="customUserDetailsService" class="org.aurora.timeexpense.service.MyUserService"/>

哪里org.aurora.timeexpense.service.MyUserService是我定义的实现 UserDetailsS​​ervice 的服务的路径。

4.Spring Security 配置将如下所示 <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="customUserDetailsService"> </authentication-provider> </authentication-manager>

你可以走了。

关于java - 在 user-service-ref 中使用 jdbc-user-service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com