0 0

session问题20

需要做个登录验证,怎么使用session记录登录错误次数?目的是在用户登录错误3次后登录页面显示要求输入验证码。

问题补充:public String login() {
boolean isHuman = imageCaptchaService.validateResponseForID(contextPvd
.getSessionId(false), checkCode);


User user = userMng.authenticate(loginName, password);
if (user == null) {
addActionError("用户名不存在或密码错误!");

return loginInput();
}
if (!isHuman) {
addActionError("验证码错误!");
return loginInput();
}
}

应该怎么改?
2012年9月04日 14:30

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

0 0

采纳的答案

private Map<String,Integer>map=new HashMap<String, Integer>();
public String login() {
boolean isHuman = imageCaptchaService.validateResponseForID(contextPvd
.getSessionId(false), checkCode);






User user = userMng.authenticate(loginName, password);
if (user == null) {
addActionError("用户名不存在或密码错误!");
if(map.get(loginName)!=null)
{
int count=map.get(loginName);
map.put(loginName,count+=1);//累加错误登录次数
}else
{
map.put(loginName,1);
}
return loginInput();
}
int count=map.get(loginName);
if(count==3)//当错误此时等于3输入验证码 连接
{//验证码

}
if (!isHuman) {
addActionError("验证码错误!");
return loginInput();
}
}
//需要添加登录陈功后清空Map的count=0;

2012年9月04日 15:32
0 0

这个就应该直接写数据库的

2012年9月04日 19:05
0 0

优化优化.

public String login() {
		boolean isHuman = imageCaptchaService.validateResponseForID(contextPvd.getSessionId(false),checkCode);
		if (!isHuman) {
			addActionError("验证码错误!");
			return loginInput()
		}
		
		SimpleDateFormat f= new SimpleDateFormat("yyyyMMdd");
		String dateStr = f.format(new Date());//yyyMMdd
		
		Map<String, Object> application = ActionContext.getContext().getApplication();
		Map<String, Integer> errorMap = application.get(loginName);//错误次数记录
		Integer errorCount = 0;
		if (errorMap != null ){
			errorCount = errorMap.get(dateStr) == null ? 0 : errorMap.get(dateStr);
			if (errorCount >= 3) {// return login
				addActionError("当天密码错误次数超过三次!");
				return loginInput();
			}
		}else{
			errorMap = new HashMap<String, Integer>();
			application.put(loginName, errorMap);
		}
		User user = userMng.authenticate(loginName, password);
		if (user == null) {
			addActionError("用户名不存在或密码错误!");
			errorMap.put(dateStr, ++errorCount);
			return loginInput()
		}else{//清空密码错误记录
			application.remove(loginName);
		}
	}

2012年9月04日 16:37
0 0

一般情况下,这样的信息是要入库的

2012年9月04日 16:35
0 0

public String login() {
		boolean isHuman = imageCaptchaService.validateResponseForID(contextPvd.getSessionId(false),checkCode);
		if (!isHuman) {
			addActionError("验证码错误!");
			return loginInput()
		}
		Map<String, Object> application = ActionContext.getContext().getApplication();
		Integer errorCount = application.get(loginName) == null ? 0 : (Integer) application.get(loginName);
		if (errorCount >= 3) {// return login
			addActionError("用户密码错误次数操作三次!");
			return loginInput();
		}
		User user = userMng.authenticate(loginName, password);
		if (user == null) {
			addActionError("用户名不存在或密码错误!");
			application.put(loginName, ++errorCount);
			return loginInput()
		}else{//清空密码错误记录
			application.remove(loginName);
		}
		 
	}

2012年9月04日 15:45
0 0

使用Application记录这个username登录错误的次数

2012年9月04日 15:06
0 0

1.数据库
2. session 监听器 HttpSessionListener 监听session创建,销毁,在这个过程中判断次数,用户名。和其他处理

2012年9月04日 14:54
0 0

Map<String,Integer>map=new HashMap<String, Integer>();

if(map.get(session.getId())!=null)
{
int count=map.get(session.getId());
map.put(session.getId(),count+=1);
}else
{
map.put(session.getId(),1);
}

2012年9月04日 14:48
0 0

这个不应该在session中存储,因为这样错误次数是针对一个客户端,当用户关闭客户端 然后再启动一个就会创建一个新session;

思路:
1、使用如HashMap 、Ehcache(可以设定缓存大小,之前我就用这个记录) 或 内存表;记录 userid ----> count之间对应关系
2、先查userid对应的count,如果没有则加1;
3、判断数量是否大于最大次数

2012年9月04日 14:45

相关推荐

    验证码的session问题

    验证码的Session问题主要涉及到Web应用中的用户验证与安全机制。在Web开发中,验证码是一种防止自动机器人或恶意脚本进行非法操作的有效手段,如防止批量注册、刷票等。而Session是服务器端用来存储用户会话信息的一...

    同浏览器不同窗口不同用户Session问题

    正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。

    CASClient集群环境的Session问题及解决方案.docx

    CASClient 集群环境的 Session 问题及解决方案 本文将详细介绍 CASClient 集群环境中的 Session 问题及解决方案。CASClient 是一种开源的单点登录系统,能够提供统一的登录和注销机制。但是在集群环境中应用 CAS...

    一般应用程序中如何处理Web页面的Session问题

    ### 一般应用程序中如何处理Web页面的Session问题 在Web开发过程中,Session管理是一项至关重要的技术,它确保了用户在多次请求之间的状态得以保存。本文将深入探讨在使用一般应用程序处理Ajax请求时如何有效地获取...

    微信小程序实现Session功能及无法获取session问题的解决方法

    因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...

    uploadify jsp上传附件火狐浏览器不兼容丢失session问题

    uploadify jsp上传附件火狐浏览器不兼容丢失session问题,Uploadify v3.2

    session 问题探讨

    ### Session问题探讨:登录安全机制详解 在现代Web应用中,Session管理是保障用户认证与授权的核心技术之一,尤其在涉及用户登录等敏感操作时显得尤为重要。本文将深入探讨Session的相关概念、工作原理以及如何利用...

    解决springboot实现跨域session共享问题

    然而,随着Web服务的复杂性和交互性增加,跨域资源共享(CORS)和会话(Session)共享成为开发者需要面对的重要问题。本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关...

    iframe 跨域访问session

    然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...

    IE的cookie机制导致的session问题及解决办法.doc

    标题与描述概述的知识点主要集中在Internet Explorer(IE)的Cookie机制如何引发Session丢失的问题,并探讨了解决方案。本文将深入解析这一现象的原因、影响以及如何有效应对。 ### 一、IE Cookie机制与Session关联...

    IFrame中Session丢失的解决办法

    在探讨“IFrame中Session丢失的解决...通过上述策略的应用,可以有效解决IFrame环境下Session丢失的问题,提高Web应用的稳定性和安全性。然而,开发者还需持续关注浏览器更新和隐私政策变化,以适应不断发展的Web环境。

    MobaXterm_专业版_无session

    **MobaXterm 专业版 无session:全能的远程终端解决方案** MobaXterm 是一款强大且功能丰富的远程计算工具,尤其适用于IT专业人士和开发者。它的专业版提供了一整套高级特性,使得用户能够轻松地进行远程会话管理、...

    vue2 前后端分离项目ajax跨域session问题解决方法

    在前后端分离的项目中,Vue2经常遇到的一个挑战是处理AJAX跨域请求时的Session问题。在本文中,我们将深入探讨这个问题,并提供一种解决方案。 首先,让我们理解跨域和Session的基本概念。跨域是由于浏览器的同源...

    分布式session方案

    分布式 Session 方案是指在分布式系统中,为了解决 Session 问题而采用的方法。 Session 是 Web 应用程序中保存用户信息的机制,当用户请求时,服务器需要记录用户的信息,以便在后续请求中使用。然而,在分布式系统...

    phpcms web发布session过期问题解决

    在提供的文件列表中,`TestFilter.java`和`TestGetHeXunInfo.java`看起来是Java相关的测试文件,与PHP CMS的Session问题不太直接相关。不过,如果你的系统中涉及到Java应用与PHP CMS的交互,如使用Java客户端访问...

    redis-session-manager-tomcat6共享包

    总之,“redis-session-manager-tomcat6共享包”为Tomcat 6提供了一种高效、可靠的session共享方案,通过修复null值session问题,提高了系统的稳定性和兼容性,是现代Web应用分布式架构中的重要组件。

    web.py在SAE中的Session问题解决方法(使用mysql存储)

    以上就是“web.py在SAE中的Session问题解决方法(使用mysql存储)”的核心内容。通过阅读本文档,开发者可以在SAE平台中使用web.py框架,并利用MySQL数据库存储Session信息,解决Session无法本地存储的问题,从而...

    codeigniter兼容Session

    然后查看CodeIgniter的日志文件(`application/logs/`),它们可能包含关于Session问题的线索。 总之,理解和掌握CodeIgniter的Session机制对于开发健壮的Web应用程序至关重要。正确配置和使用Session可以提高用户...

    uploadify在Firefox下丢失session问题的解决方法

    本文将详细探讨一个特定的问题,即“uploadify在Firefox下丢失session问题的解决方法”,这是一个常见的前端上传插件与后端session管理不兼容的问题,特别是在使用JSP和Firefox浏览器时。 首先,了解session的基本...

Global site tag (gtag.js) - Google Analytics