spring security 自定义UserDetailsService问题

问题描述

在自定义UserDetailsService时我继承了JdbcDaoImpl,并重写了loadUserByUsername()方法在方法体中:@Overridepublic 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大牛...

解决方案

还要修改一个地方,就是JdbcUserDetailsManager中执行这个sql的部分。建议增加一个类,继承JdbcUserDetailsManager,覆盖loadUsersByUsername方法。
解决方案二:
[url][/url]
解决方案三:
UserDetails ud = super.loadUserByUsername(username); 你在自定义方法执行时先执行了父类的方法,肯定是调用了父类的实现了, 想实现自定义sql可以在配置文件中自定义
解决方案四:
看下面配置你就应该明白了。<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>

时间: 2024-09-09 02:09:24

spring security 自定义UserDetailsService问题的相关文章

spring security 自定义页面 404

问题描述 当我在spring-security添加自定义标签<http auto-config="true" > <intercept-url pattern="/views/home.jsp" access="ROLE_USER"></intercept-url> <intercept-url pattern="/**" access="ROLE_USER">

spring security 自定义加密方式,配置

问题描述 <authentication-manageralias="authenticationManager"><authentication-provideruser-service-ref="MyUserDetailService"><password-encoderref="myPasswordEncode"><salt-sourceuser-property="username&qu

Spring Security笔记:自定义Login/Logout Filter、AuthenticationProvider、AuthenticationToken

在前面的学习中,配置文件中的<http>...</http>都是采用的auto-config="true"这种自动配置模式,根据Spring Security文档的说明: ------------------ auto-config Automatically registers a login form, BASIC authentication, logout services. If set to "true", all of thes

Spring Security笔记:自定义登录页

以下内容参考了 http://www.mkyong.com/spring-security/spring-security-form-login-example/ 接上回,在前面的Hello World示例中,Spring Security为我们自动生成了默认登录页,对于大多数项目而言,如此简单的登录页并不能满足实际需求,接下来,我们看看如何自定义登录页 一.项目结构 与前一个示例相比较,只是多了一个css样式以及登录页login.jsp,这二个文件具体的内容如下: 1 @CHARSET "UT

spring security启动异常,求大神来指点下

问题描述 SSH想加上spring security,搞了几天都没搞出来,哪位大神来指点下  WEB.XML配置 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation<

Spring Boot中集成Spring Security 专题

if语句中条件判断就是检查当前的url请求是否是logout-url的配置值,接下来,获取用户的authentication,并循环调用处理器链中各个处理器的logout()函数,前面在parse阶段说过,处理器链中有两个实例,处理会话的SecurityContextLogoutHandler及remember-me服务,我们来一一看看它们的logout函数实现: 2.1.0 SecurityContextLogoutHandler public void logout(HttpServletR

Spring Security 入门详解(转)

1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别 处理身份证验证和授权.它充分使用了依赖注入和面向切面的技术. Spring security主要是从两个方面解决安全性问题: web请求级别:使用servlet过滤器保护web请求并限制URL级别的访问 方法调用级别:使用Spring AOP保护方法调用,确保具有适当权限的用户采用访问安全保护的方法.

Spring Security安全框架入门篇

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.Spring Security相关概念 1.1..spring Security介绍: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架(简单说是对访问权限进行控制嘛).它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Con

Spring Security实现动态权限管理

我所理解的动态权限就是RBAC(Role-Based Access Control). 就是可以自定义角色,配置角色可以访问哪些URL.然后给不同的角色设置不同的角色. 为什么用Spring Security?听说Spring Security是基于Shiro的.Shiro没用过.之所以用Spring Security是因为它安全.废话!是因为可以帮你防御csrf等攻击.其实现在的Chrome浏览器的同源策略已经很不错了,想csrf也没那么容易.Spring Security能防住多少我也不知道