`
brucewei777
  • 浏览: 84919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring-security中添加用户过期功能

    博客分类:
  • java
阅读更多
    之前有篇文章记录了我是如何快速添加spring-security模块的,虽然快速,但是功能很简单。最近需要添加一个新的功能,就是验证用户是否过期。
     实现方法肯定很多,但是首先要考虑自己项目当前什么个结构。在我的web.xml中,有两个Filter,如下:
<filter>
	<filter-name>CodeFilter</filter-name>
		<filter-class>com.platform.util.CheckCodeFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CodeFilter</filter-name>
		<url-pattern>/j_spring_security_check</url-pattern>
	</filter-mapping>
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

第一个filter就是用来验证安全码的,第二个就是spring-security发挥功能的filter。
开始,我打算在CodeFilter中验证用户是否过期。
filterChain.doFilter(request, response);
Object exceptObject = session.getAttribute(
				"SPRING_SECURITY_LAST_EXCEPTION");
		if (exceptObject != null
				&& exceptObject instanceof AccountExpiredException)
			response.sendRedirect("login.jsp?errInfo=3");

高人一看就知道这里错了,doFilter之后,是不能再sendRedirect的。我这么想的原因就是springSecurityFilterChain运行之后才会有验证结果,我才好判断是否有过期的异常。
没办法,只能到login.jsp页面去干这件事情了。
session = request.getSession(false);
if(session!=null){ 
	Object exceptObject = session
	.getAttribute("SPRING_SECURITY_LAST_EXCEPTION");
if (exceptObject != null
	&& exceptObject instanceof AccountExpiredException)
{
	out.println("<script language='JavaScript' defer='defer'>");
	out.println("alert('用户已过期!');");
	out.println("</script>");
	}
return;
}


另外我用的是spring-security2.0,好像不支持验证用户过期。下面是JdbcDaoImpl里的一段代码,从这里看,有关是否不过期的变量都被true默认代替了,所以,得自己写一个自己的JdbcDaoImpl。
protected Object mapRow(ResultSet rs, int rownum) throws SQLException {
            String username = rs.getString(1);
            String password = rs.getString(2);
            boolean enabled = rs.getBoolean(3);
            UserDetails user = new User(username, password, enabled, true, true, true,
                    new GrantedAuthority[] {new GrantedAuthorityImpl("HOLDER")});

            return user;
        }

我写的JdbcDaoImpl取名叫MyJdbcDaoImpl。并且要在applicationContext.xml中进行配置:
<bean id="securityService" class="com.platform.util.MyJdbcDaoImpl">
	<property name="dataSource" ref="dataSource"/>
	</bean>

<security:authentication-provider user-service-ref="securityService">
	<security:password-encoder hash="md5"/>
    </security:authentication-provider>
0
1
分享到:
评论

相关推荐

    spring-Security-oauth2.zip

    在Spring Boot项目中,可以通过添加`spring-security-oauth2-autoconfigure`依赖来快速启用OAuth2支持。配置主要包括: - **AuthorizationServerConfigurerAdapter**:配置授权服务器,定义授权端点、令牌端点等。...

    spring-security-oauth-master

    1. 添加依赖:引入`spring-security-oauth2-server`和`spring-security-oauth2-client`库。 2. 配置OAuth2服务器:创建`AuthorizationServerConfigurerAdapter`并重写相关方法。 3. 配置资源服务器:创建`...

    renren-security开发文档3.2_完整版.zip

    它集成了Spring Security,提供了丰富的功能,包括身份验证、授权、会话管理、跨站请求伪造(CSRF)防护、密码加密等。通过此框架,开发者可以更便捷地实现权限控制和安全防护,减少重复的工作量。 1. **身份验证**...

    spring-security-oauth2详细配置demo

    `spring-security-oauth2`模块提供了OAuth2协议的支持,使得开发人员可以轻松地添加认证和授权功能到他们的应用程序。 OAuth2是一个开放标准,它允许用户让第三方应用在无需用户提供用户名和密码的情况下,获取有限...

    spring-security-3.1.0

    在本文中,我们将深入探讨Spring Security的核心概念、功能以及3.1.0版本中的关键特性。 1. **核心概念** - **安全上下文(Security Context)**:这是Spring Security的核心组件,存储当前用户的安全信息,如身份...

    renren-security轻量级权限管理系统3.2最新完整版的开发文档

    文档会详细解释如何在`pom.xml`中添加`renren-security`的依赖,以及如何配置相应的启动类和配置文件。 对于认证部分,文档详细阐述了`renren-security`的认证流程,包括用户的登录请求处理、凭证的校验、以及如何...

    springboot-security.zip

    在Spring Boot应用中整合Spring Security,首先需要添加相应的依赖。在`pom.xml`或`build.gradle`文件中,你需要引入Spring Security的依赖项,例如: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;...

    spring-security

    在 Spring Security 中,当用户会话过期时,会被重定向至此页面。 3. **index.jsp**: 这是应用的首页,用户在登录后可能会被重定向到此页面。Spring Security 可以控制哪些用户可以访问这个页面。 4. **loggedout....

    spring-security-jwt-guide.zip

    1. 添加依赖:在pom.xml中引入Spring Security、JWT库、Redis和Quartz的相关依赖。 2. 配置文件:设置Spring Security、Redis和Quartz的相关属性。 3. 主启动类:启用Spring Security和Quartz的相关配置。 七、示例...

    springboot-springsecurity-demo

    本示例"springboot-springsecurity-demo"就是基于这两个组件的深度整合,旨在帮助开发者理解如何在Spring Boot项目中实现安全控制。 首先,让我们来看看核心文件`pom.xml`。这是Maven项目的配置文件,用于管理项目...

    spring-oauth2-example:一个使用原始令牌调用另一个服务的基本 Spring-security-oauth2 示例

    在Spring Boot应用中,我们可以通过添加`spring-security-oauth2-autoconfigure`依赖来配置Authorization Server。我们需要定义客户端详细信息、授权类型、令牌端点等。 4. **配置Resource Server**: Resource ...

    Spring Security UserDetails实现原理详解

    只需在项目中引入`spring-boot-starter-security`依赖,Spring Boot就会自动配置安全功能。如果需要监控Spring Security的状态,可以添加`spring-boot-starter-actuator`。此外,还需要`spring-boot-starter-web`来...

    spring oauth 配置实现

    Spring Security OAuth2 是一个强大的框架,用于为应用程序提供授权(Authorization)和认证(Authentication)功能。这个框架基于OAuth2协议,允许第三方应用在用户授权的情况下访问受保护的资源。在这个配置实现中...

    spring-security-test:一个测试spring security java config进行token认证的小项目

    在Spring Security中实现JWT认证,我们需要添加相关的依赖,如`spring-security-jwt`,然后创建Token解析器和提供者。解析器负责验证Token的有效性,提供者则用于生成新的Token。以下是一个简单的JWT Token提供者的...

    Grails + Spring Security 权限控制

    首先,我们需要在Grails项目中添加Spring Security插件。这通常通过在`build.gradle`文件中引入依赖来完成,例如: ```groovy dependencies { compile 'org.grails.plugins:spring-security-core:4.0.2' } ``` 安装...

    spring-security-jwt

    1. 添加依赖:在项目中引入 Spring Security 和 JWT 相关的库,如 spring-security-config、spring-security-web、jjwt 等。 2. 配置 Spring Security:创建一个配置类继承 `WebSecurityConfigurerAdapter`,重写 `...

    SpringBoot2.6整合SpringSecurity+JWT

    1. **添加依赖**:首先,在`pom.xml`文件中引入Spring Security和JWT的相关依赖,如`spring-security-oauth2-jose`和`jjwt`库。 2. **配置Spring Security**:创建一个`SecurityConfig`类,继承`...

    SpringSecurity静态资源.rar

    为了允许用户访问静态资源,我们需要在SpringSecurity的配置中进行适当的设置。以下是一些关于SpringSecurity处理静态资源的关键知识点: 1. **静态资源路径配置**:在Spring Security配置类中,可以通过`...

    Spring-security-jwt-demo:使用JWT的Spring安全性

    在Spring Security中集成JWT,首先需要添加相关依赖,比如jjwt库,用于生成和解析JWT。然后,我们需要配置Spring Security,包括定义权限检查、认证和授权策略。这通常涉及到创建一个自定义的`AuthenticationManager...

    spring boot3.x结合spring security最新版实现jwt登录验证

    - 可选地,可以添加刷新Token的功能,允许用户在Token即将过期时获取新的Token,以保持会话的持续性。 8. **错误处理**: - 设计合适的错误处理机制,比如当JWT Token无效或过期时,返回明确的错误信息。 9. **...

Global site tag (gtag.js) - Google Analytics