0 0

spring security 自定义UserDetailsService问题5

在自定义UserDetailsService时我继承了JdbcDaoImpl,并重写了loadUserByUsername()方法在方法体中:
@Override
	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
		UserDetails ud = super.loadUserByUsername(username);
		AuthUserDetails authUser = new AuthUserDetails(ud.getUsername(),ud.getPassword(),ud.isEnabled(),ud.isAccountNonExpired(),
								ud.isCredentialsNonExpired(),ud.isAccountNonLocked(),ud.getAuthorities());
}

调用了父类的loadUserByUsername()方法,是不是就是走了父类中的sql:
 public static final String DEF_USERS_BY_USERNAME_QUERY =
            "SELECT username,password,enabled " +
            "FROM users " +
            "WHERE username = ?";

这样我是不是就得建users表?
我感觉这个我能通过自己自定义应该可以重写一下吧?
求ss大牛...
2012年11月27日 22:42

4个答案 按时间排序 按投票排序

0 0

采纳的答案

还要修改一个地方,就是JdbcUserDetailsManager中执行这个sql的部分。建议增加一个类,继承JdbcUserDetailsManager,覆盖loadUsersByUsername方法。

2012年11月28日 12:48
0 0

[url][/url]

2015年6月25日 16:22
0 0

UserDetails ud = super.loadUserByUsername(username); 你在自定义方法执行时先执行了父类的方法,肯定是调用了父类的实现了, 想实现自定义sql可以在配置文件中自定义

2012年11月28日 11:39
0 0

看下面配置你就应该明白了。

<bean id="userDetailsService"

       class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">

       <property name="dataSource" ref="dataSource" />

       <property name="usersByUsernameQuery">

           <value>

                SELECT username,password,1 FROM t_user WHERE status='1'

                AND username = ?

           </value>

           <!-- 根据用户名查询用户的SQL语句 -->

       </property>

       <property name="authoritiesByUsernameQuery">

           <value>

                SELECT u.username,p.priv_name FROM t_user u,t_user_priv

                p WHERE u.user_id =p.user_id AND u.username = ?

           </value>

       <!-- 根据用户名查询用户权限的sql语句 -->

       </property>

  </bean>

2012年11月28日 10:31

相关推荐

    Spring security 自定义密码加密方式的使用范例。

    Spring Security 是一个强大的Java安全框架,...通过这个项目,你可以深入理解Spring Security的工作原理,并学习如何自定义其核心组件。如果你对码云不熟悉,也可以选择其他版本控制系统,如Git,进行代码托管和协作。

    spring-security实现自定义登录认证.rar

    这个压缩包中的“demo”文件可能包含了以上所有步骤的代码示例,包括Spring Security的基本配置、自定义UserDetailsService、AuthenticationProvider以及JWT的生成和验证。通过学习和运行这个示例,你可以深入理解...

    spring security自定义数据库小项目

    在 Spring Security 中,我们可以通过实现 `UserDetailsService` 接口来自定义用户认证逻辑。这个接口要求提供一个方法 `loadUserByUsername(String username)`,用于根据用户名查询用户信息。你可以连接到数据库,...

    SpringSecurity 之自定义用户权限信息的存取

    在SpringSecurity中,自定义`UserDetailsService`的基本步骤如下: 1. 定义一个`UserDetailsService`的Bean,在其中编写访问数据库的代码,具体实现加载用户信息和权限的逻辑。 ```java @Bean public ...

    springboot springsecurity动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    SpringSecurity笔记,编程不良人笔记

    在`SpringSecurity.md`和`SpringSecurity.pdf`文档中,可能包含SpringSecurity配置、自定义用户服务、授权策略等方面的代码示例。`codes`目录可能包含实际运行的项目代码,方便读者实践和理解。 8. **图笔记.draw...

    spring security实现动态授权

    2. **自定义UserDetailsService**:实现`UserDetailsService`接口,从数据库加载用户信息,包括用户名、密码以及角色。 3. **自定义AccessDecisionManager**:这个组件负责做出访问决策。你可以创建一个实现`...

    SpringSecurity素材.rar

    3. **用户认证**:详细阐述如何实现用户登录功能,包括自定义UserDetailsService以加载用户信息,以及使用内存、数据库或其他数据源存储用户凭据。同时,可能会介绍基于表单登录、JWT令牌认证等多种认证方式。 4. *...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、授权和访问控制功能。在本文中,我们将深入探讨SpringSecurity的核心概念、关键组件以及如何配置和使用这个框架。 首先,Spring...

    spring security 完整项目实例

    通过UserDetailsService接口,我们可以自定义实现来加载用户信息。用户与角色之间的关系通常通过用户角色表来建立,而角色则赋予了用户特定的权限。 登录功能是Spring Security的基础,它提供了默认的登录页面和...

    Spring Security 3多用户登录实现一

    - **自定义UserDetailsService**:创建一个实现`UserDetailsService`接口的类,覆盖`loadUserByUsername()`方法,根据用户名查询数据库获取UserDetails对象。 - **角色与权限**:Spring Security通过角色(Role)...

    spring security3 中文版本

    Spring Security 3.0.1 是在 Spring Security 3.0 的基础上进行的一次 bug 修复版本,主要针对先前版本中存在的问题进行了修正。此次版本未引入新的功能,但修正了一些已知的问题,增强了稳定性。 ##### 1.4 获取 ...

    spring-security 官方文档 中文版

    本文档所指的版本为 Spring Security 3.0.1,这是一个 bug fix 版本,主要针对 3.0 版本中存在的问题进行修复,确保开发者能够获取更稳定可靠的 Spring Security 库。 **1.4 获取 Spring Security** - **项目模块*...

    spring spring security2.5 jar

    Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证和授权。它为Web应用提供了全面的保护,防止未经授权的访问和操作。在版本2.5时,Spring Security已经是一个成熟且功能丰富的...

    springSecurity 实现传参

    Spring Security提供了`UserDetailsService`接口,你可以实现这个接口来从数据库中加载用户信息。 6. **密码编码器**:Spring Security推荐使用`PasswordEncoder`接口,如`BCryptPasswordEncoder`,来确保密码的...

    Spring Security 把授权信息写入数据库

    24.4. 自定义UserDetailsService 为了将用户信息和角色存储在数据库中,你需要实现`UserDetailsService`接口,并创建一个定制的服务,例如`CustomUserDetailsService`。这个服务会查询数据库来获取用户信息,包括...

    狂神Spring Security静态资源

    Spring Security 是一个强大的安全框架,主要用于Java Web应用的安全管理,包括认证、授权和访问控制等。在Spring Boot中,Spring Security 提供了简洁的API和自动化配置,使得开发者能够快速集成安全功能。在这个名...

    springsecurity原理流程图.pdf

    Spring Security 是一个功能强大且高度可定制的身份验证和...在实际应用中,开发者可以根据具体的安全需求,自定义认证方式和过滤器链,以及扩展或替换特定的实现类,从而在Spring应用程序中实现灵活和强大的安全控制。

    spring_security_3.1

    1. **身份验证**:Spring Security 提供了多种身份验证机制,包括基于内存的、JDBC的、LDAP的和自定义的。在3.1版本中,你可以配置`UserDetailsService`接口来获取用户信息,并使用`AuthenticationProvider`来处理...

Global site tag (gtag.js) - Google Analytics