`

spring security 2添加用户验证码

 
阅读更多

spring security 2安全功能,添加用户验证码的实现,方案有3个:
方案1、由于AuthenticationProcessingFilter过滤器是拦截/j_spring_security_check地址,他的实现类里只读取的j_username和j_password,
没有读取其他的用户登陆信息,所以我就把验证码(code)在login.jsp页面和j_username拼装在一起,在UserDetailServiceImpl类UserDetails loadUserByUsername(String userName)
方法里对传进的userName进行拆分,分解出用户名和验证码,剩下的工作不用我详细说了。
方案2、继承AuthenticationProcessingFilter重写一下AuthenticationProcessingFilter类的实现类,该方案的缺点是对现有的spring security 2配置改动较大;
方案3(我推荐的),优点自己体会。
步骤1写过滤器,代码如下:
package com.ss3ex.core.security.service;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CodeFilter extends HttpServlet implements Filter {
/**
* 判断用户输入的验证码是否正确
*/
private static final long serialVersionUID = -5838154525730151323L;

public void init(FilterConfig config) throws ServletException {
}

public void destroy() {
}

public void doFilter(ServletRequest servletRequest,
    ServletResponse servletResponse, FilterChain filterChain)
    throws IOException, ServletException {
   HttpServletRequest request = (HttpServletRequest) servletRequest;
   HttpServletResponse response = (HttpServletResponse) servletResponse;
   String code = request.getParameter("j_code");
   Cookie[] cookie = request.getCookies();
   String codes = "";
   for (int i = 0; cookie != null && i < cookie.length; i++) {
    if ("codes".equals(cookie[i].getName())) {
     codes = cookie[i].getValue();
    }
   }
   if (!"".equals(codes) && codes != null) {
    if (code.equalsIgnoreCase(codes)) {
     filterChain.doFilter(request, response);
    } else {
     response.sendRedirect("/login.jsp?error=5");
    }
   } else {
    response.sendRedirect("/login.jsp?error=5");
   }
}
}
步骤2添加web.xml中的配置,代码如下:
<filter>
   <filter-name>CodeFilter</filter-name>
   <filter-class>com.ss3ex.core.security.service.CodeFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>CodeFilter</filter-name>
   <url-pattern>/j_spring_security_check</url-pattern>
</filter-mapping>
注意:放在<filter-name>springSecurityFilterChain</filter-name>的前面就可以了。

 

 

 转自http://www.blogjava.net/fanyingjie/archive/2010/07/23/326958.html

分享到:
评论

相关推荐

    spring security3.1 实现验证码自定义登录

    我们可以创建一个实现了AuthenticationProvider接口的类,然后在这个类中添加验证码验证逻辑。当用户提交登录表单时,除了用户名和密码外,还需要提交验证码。我们的AuthenticationProvider会在验证用户名和密码的...

    Spring Security登录添加验证码的实现过程

    Spring Security 登录添加验证码的实现过程 在本文中,我们将学习如何在 Spring Security 框架中添加验证码功能。验证码是登录系统中常见的需求,网上也有非常成熟的解决方案。为了在 Spring Security 框架中实现这...

    Spring Security 实现短信验证码登录功能

    在本文中,我们将深入探讨如何使用Spring Security框架实现短信验证码登录功能。Spring Security是一个强大的安全框架,用于管理和保护Web应用程序的访问控制。在传统的用户名密码登录方式之外,短信验证码登录提供...

    Springboot集成spring-security实现基于验证码的登录认证项目-源码

    在Spring Security的配置中,我们需要添加一个过滤器,该过滤器负责在登录过程中检查用户提交的验证码是否有效。 接下来,我们将Spring Boot与Spring Security结合,创建一个启动器。在Spring Boot的主配置类上,...

    spring-gateway实现登录验证码校验的代码,百分百可用

    在本项目中,我们将探讨如何在 Spring Gateway 中实现登录时的验证码校验功能,确保用户身份的安全性。 验证码是一种防止自动机器人或恶意软件进行非法操作的有效手段,它要求用户输入显示在图像中的随机字符序列。...

    springsecurity验证码登录.rar

    这个压缩包“springsecurity验证码登录.rar”显然是为了演示如何在SpringSecurity中集成验证码功能,以增强用户登录的安全性。验证码是防止恶意自动登录尝试(如机器人或脚本)的有效手段,它要求用户在登录时输入...

    基本的spring mvc + spring security实现的登录(无数据库)

    2. **Spring Security**: - **认证与授权**:Spring Security提供了一套完整的认证和授权机制。在这个无数据库的登录示例中,可能使用内存中的UserDetails和UserDetailsService实现认证。 - **配置**:可以使用...

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

    2. **配置Spring Security**: - 配置Spring Security的WebSecurityConfigurerAdapter,关闭默认的CSRF保护,并指定不进行HTTP Basic认证。 - 在`configure(HttpSecurity http)`方法中,定义允许匿名访问的资源和...

    struts2+spring3验证码登录实例

    你需要将这两个框架的库添加到项目的类路径中,并配置相应的web.xml文件,以便Struts2和Spring3能够协同工作。 在Struts2中,你可以创建一个专门处理登录请求的Action类,这个类通常会注入Spring管理的业务服务。当...

    SpringSecurity4.2 自定义登陆页面,图形验证码,源码

    SpringSecurity是Java领域中一款强大的安全框架,用于处理应用程序的安全性。在4.2版本中,它提供了丰富的功能,允许开发者自定义登录页面并集成图形验证码以增强安全性。本篇文章将详细探讨如何在SpringSecurity ...

    SpringBoot+Security 发送短信验证码的实现

    4. **Spring Security配置**:配置Spring Security以处理短信验证码的验证。这通常涉及到自定义`AuthenticationProvider`,在用户尝试登录时,会调用此组件进行身份验证。在这个过程中,我们需要校验用户输入的...

    spring security xml方式配置

    这通常涉及到自定义`UsernamePasswordAuthenticationFilter`并添加验证码验证逻辑。 至于Spring MVC和Bootstrap的结合,它们分别负责Web应用的控制器和前端界面美化。Spring MVC提供模型-视图-控制器架构,使后端...

    SpringSecurity实现图形验证码功能实例代码

    可以在Spring Security的过滤链中添加自定义过滤器,用于在用户登录或其他需要验证码的表单提交时进行验证码的验证。这通常涉及到拦截请求,提取验证码,然后与会话中的验证码进行比较。 7. **考虑安全性**: ...

    浅析Spring Security登录验证流程

    SmsCodeAuthenticationFilter实现短信验证码登录认证,SocialAuthenticationFilter实现社交媒体方式登录认证的处理,Oauth2AuthenticationProcessingFilter和Oauth2ClientAuthenticationProcessingFilter实现Oauth2...

    spring security4 添加验证码的示例代码

    在Spring Security 4中,如果你需要添加验证码功能来增强用户登录的安全性,可以通过自定义组件来实现。以下是一个具体的步骤介绍: 1. **自定义入口点(EntryPoint)**: 通常,当用户尝试访问受保护的资源但未...

    springboot+ spring security实现登录认证

    SpringBoot结合Spring Security实现登录认证是企业级应用开发中常见的安全框架组合,它们为Web应用程序提供了强大的安全性。本文将深入探讨这两个技术的核心概念、配置以及如何整合以实现用户登录认证功能。 ...

    全套Spring Security入门到项目实战课程

    - **定义**: Spring Security 是一款基于 Spring 框架的身份认证(Authentication)与用户授权(Authorization)的安全框架,提供了全面的Web应用程序安全性解决方案。 - **核心技术**: 使用了 Servlet 过滤器、IOC...

    security+jcaptcha(验证码)框架搭建

    根据提供的文件信息,本文将详细介绍如何使用 Spring Security 和 JCaptcha 框架来搭建一个包含验证码功能的安全系统。 ### 一、Spring Security简介 Spring Security 是一个强大的且高度可定制的身份验证和访问...

    security+jcaptcha(验证码)+mybatis框架搭建

    3. **配置Spring Security**:在`spring-security.xml`文件中配置Spring Security的安全策略,包括登录页面、登录失败处理、登录成功处理等。 4. **集成Jcaptcha**:配置Jcaptcha来生成验证码图片,并在登录页面上...

Global site tag (gtag.js) - Google Analytics