0 0

spring security3 的UserDetailsService问题0

在使用spring security3 的时候,现象了UserDetailsService这个接口,我现在想获得serverName,就像这样一样:request.getServerName();
下面附上我的代码块,请高手指引。
@Service("adminDetailsServiceImpl")
public class AdminDetailsServiceImpl implements UserDetailsService {
	private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());

	@Resource(name = "adminDaoImpl")
	private AdminDao adminDao;

	@Resource(name = "memberDaoImpl")
	private MemberDao memberDao;

	@SuppressWarnings("unused")
	@Transactional
	public Admin loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
		try {
			Member member = memberDao.getMemberByUsernameOrEmailOrMobile(username);
			if (member == null) {
				throw new UsernameNotFoundException("用户[" + username + "]不存在!");
			}
			Admin admin = adminDao.getAdminByMember(member);
			if (admin == null) {
				throw new UsernameNotFoundException("管理员[" + username + "]不存在!");
			} 
//			else {
//				List<String> storeDomainName = adminDao.getStoreDomainName(admin.getStoreId());
//
//				//String sb = authentication.getName();
			HttpServletRequest request = ServletActionContext.getRequest();
			request.getServerName();
				System.out.println("------------------------------      " +SpringSecurityUtil.getStoreId());
//			}
			if (StringUtils.isNotEmpty(member.getEmail())) {
				admin.setUsername(member.getEmail());
			} else if (StringUtils.isNotEmpty(member.getMobile())) {
				admin.setUsername(member.getMobile());
			} else {
				admin.setUsername(member.getUsername());
			}
			admin.setPassword(member.getPassword());
			// 解除管理员账户锁定
			Setting setting = SettingUtil.getSetting(admin.getStoreId());
			if (admin.getIsAccountLocked() == true) {
				if (setting.getIsLoginFailureLock() == true) {
					int loginFailureLockTime = setting.getLoginFailureLockTime();
					if (loginFailureLockTime != 0) {
						Date lockedDate = admin.getLockedDate();
						Date nonLockedTime = DateUtils.addMinutes(lockedDate, loginFailureLockTime);
						Date now = new Date();
						if (now.after(nonLockedTime)) {
							admin.setLoginFailureCount(0);
							admin.setIsAccountLocked(false);
							admin.setLockedDate(null);
							adminDao.update(admin);
						}
					}
				} else {
					admin.setLoginFailureCount(0);
					admin.setIsAccountLocked(false);
					admin.setLockedDate(null);
					adminDao.update(admin);
				}
			}
			admin.setAuthorities(getGrantedAuthorities(admin));
			return admin;
		} catch (Exception e) {
			LOGGER.error(e.getMessage(), e);
		}
		return null;
	}

	private GrantedAuthority[] getGrantedAuthorities(Admin admin) {
		Set<GrantedAuthority> grantedAuthorities = new HashSet<GrantedAuthority>();
		for (Role role : admin.getRoleSet()) {
			for (String authority : role.getAuthorityList()) {
				grantedAuthorities.add(new GrantedAuthorityImpl(authority));
			}
		}
		return grantedAuthorities.toArray(new GrantedAuthority[grantedAuthorities.size()]);
	}

}

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

0 0

你就是想获取request 是吧;
我来告诉你吧:

HttpServletRequest request = ((ServletRequestAttributes) 
				RequestContextHolder.currentRequestAttributes()).getRequest();

2014年3月14日 11:35
0 0

让我看看其他相关联的代码可以吗?
尤其是这句中提到的SettingUtil 和Setting
// 解除管理员账户锁定 
Setting setting = SettingUtil.getSetting(admin.getStoreId());
  

2013年4月03日 19:18

相关推荐

    Spring Security 3.pdf

    1. **UserDetailsService**: 这是Spring Security的核心组件之一,负责加载用户信息。开发者可以通过实现这个接口,从数据库或其他来源获取用户信息。 2. **RoleHierarchy**: 定义角色之间的层次关系,允许将角色...

    Spring Security 3多用户登录实现一

    **Spring Security 3 多用户登录实现详解** Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架,广泛应用于Java EE平台上的安全解决方案。在本文中,我们将深入探讨如何在Spring Security 3中实现...

    SpringSecurity学习总结源代码

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

    spring security 3 demos

    "Spring Security 3 Demos" 是一套针对Spring Security 3 版本的示例项目,旨在帮助开发者理解并掌握该框架的基本用法和核心功能。 在这些示例中,你可以学习到以下关键知识点: 1. **身份验证(Authentication)*...

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...

    Spring Security3 Demo

    在"SpringSecurity2Demo"这个项目中,我们可以预期看到以下组成部分: 1. **配置文件**: `spring-security.xml`,这是Spring Security的核心配置文件,包含了过滤器链的配置、用户认证源、授权规则等。 2. **控制...

    SpringSecurity笔记,编程不良人笔记

    3. **SpringBoot整合SpringSecurity** - `spring-boot-starter-security`依赖:SpringBoot项目中添加此依赖即可自动配置SpringSecurity。 - 自定义登录页面:通过设置`loginPage`和`loginProcessingUrl`属性,可以...

    spring spring security2.5 jar

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

    Spring Security 3全文下载

    - **Session Management**:Spring Security提供了会话固定保护,防止会话劫持和会话超时等安全问题。 - **Concurrent Session Control**:可以限制同一用户同时登录的会话数量,防止账户被非法使用。 5. **CSRF...

    springSecurity3例子

    在Spring Security 3版本中,这个框架进一步完善了其特性和性能,使其成为开发者构建安全应用的首选工具。下面将详细探讨Spring Security 3中的关键知识点。 1. **核心组件**: - **Filter Chain**: Spring ...

    springSecurity 实现传参

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

    springsecurity原理流程图.pdf

    Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是安全领域中Spring生态系统的一部分。Spring Security旨在为Java应用程序提供一个全面的安全解决方案,尤其适用于企业级应用场景。它主要...

    狂神Spring Security静态资源

    3. **使用Spring Security的访问决策管理器(AccessDecisionManager)**:如果你希望控制哪些角色可以访问静态资源,可以实现自己的访问决策管理器,然后在配置中指定使用这个管理器。 4. **使用HTTP基本认证或OAuth2...

    SpringSecurity中文文档.zip

    同时,SpringSecurity还提供了丰富的社区资源和强大的社区支持,帮助开发者解决实际问题。 综上所述,这两份SpringSecurity的中文文档是学习和掌握SpringSecurity的宝贵资料,它们将覆盖从基础概念到高级特性的全...

    spring-security 官方文档 中文版

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

    springboot springsecurity动态权限控制

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

    spring security 3 源代码 不包含书,pets应用

    在Spring Security 3版本中,这个框架已经相当成熟,提供了许多关键的安全特性。 首先,Spring Security 3的核心组件包括Security Context(安全上下文)、Authentication(认证)、Authorization(授权)和Filter ...

Global site tag (gtag.js) - Google Analytics