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 Security登录添加验证码的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章主要介绍了spring security4 添加验证码的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring Security添加图形验证码 Spring Security添加记住我功能 Spring Security短信验证码登录 Spring Security Session管理 Spring Security退出登录 Spring Security权限控制 Spring Security OAuth2入门 Spring ...
OAuth2密码登录,添加图形验证码(开发完成) OAuth2授权码登录(开发完成) OAuth2刷新TOKEN(开发完成) 微信登录(开发完成) 短信登录(开发完成) 文件 技术栈: Sprint Boot Spring安全 Spring安全OAuth2 ...
Security中添加验证码登陆),查找,创建,删除并对用户权限进行区分等等。 ps:由于只是 Demo,所以没有调用数据库,以上所说增删改查均在 HashMap 中完成。 前端 展示如何使用 Vue 构建前端后与后端的配合,包括...
spring boot security oauth2 jwt整合,搭建一个SSO单点登录系统,认证服务和资源服务分离...... authentication 认证服务: 对身份的认证和授权 除oauth2默认的4中登录模式外,添加支持自定义模式登录 目前项目支持的...
3.5.2 复杂查询的分页 3.5.3 获取前端表格插件传值 3.6 数据范围 3.6.1 介绍 3.6.2 如何使用 3.6.3 原理 3.7 spring security + jwt鉴权 3.7.1 放开权限过滤 3.7.2 获取当前登录用户 3.7.3 会话管理 3.8 日志记录 ...
基于Spring Security Oauth2的统一认证服务,作为前端界面的 ,重写了Spring Security登录模式,支持初始化登录,所有接口以及授权端点都支持异步的方式。 支持特性 支持异步JSON登录 支持手机号,验证码登录 支持...
Spring Security OAuth 权限定制 前端权限控制到按钮级别 后端权限还在考虑是集中到网关还是放到各个微服务自行管理(待完成) 完全开源,持续更新 相关项目 功能 系统登陆 目前完成账号密码模式,可选短信验证码,...
SpringBlade微服务开发平台 采用前后端分离的模式,前端开源两个框架: (基于 React、Ant Design)、 (基于 Vue、Element-UI) 后端采用SpringCloud全家桶,并同时对其...借鉴Security,封装了Secure模块,采用JWT做Token
1.网站采用SpringSecurity作为安全验证的框架,以此区分用户和管理员的资源访问的限制。 2.首页登录对接阿里云短信服务,采用手机号验证码登录,登录之后可在个人中心修改昵称,密码等信息便于下次的密码登录。 3....
- 用户登录使用验证码防止用户暴力破解。 2. 租用模块 - 承租人: - 开始租用:用户可查看可租物品信息。用户对未被租用物品可执行租赁操作。 - 我的租用:用户可查看自己已租赁的物品清单,可执行取消申请租赁...
1. Springmvc + Mybatis集成、SpringSecurity权限控制、Spring AOP事务处理。 2. Wink Rest服务、Webservice服务:jaxws、CXF等 3. IO 流上传下载文件,多线程操作 4. 发送邮件,配置邮件服务器,发基于html、纯...
演示如何使用带有Security Namespace Configuration的Spring Security向Web应用程序添加身份验证和授权。 项目特点: 具有不同表单字段的两个登录表单。 通过密码登录(默认):用户名,密码,“记住我”选项。 ...
4、提供用户生命周期管理,支持SCIM 2协议,基于Apache Kafka代理,通过连接器(Connector)实现身份供给同步。 5、认证中心具有平台无关性、环境多样性,支持Web、手机、移动设备等, 如Apple iOS,Andriod等,将认证...
图书销售平台概括技术指标后端Java 11 Spring启动2.4.3 Gradle6.8.2 Spring Security 2.4.3 SpringHateoas 雷迪斯LombokJPA 查询DSL wt MySQL 前端React轴距样式组件字体很棒React钩路由器React带必要性要求规范注册...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-1.3.jar 字符编码 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...