用户登录注册之验证码技术实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用户登录注册之验证码技术实现

对于一些恶意强暴破解密码的行为(即通过硬性尝试用户名密码进行破解),可以采用验证码对其进行抵御,对于一些程序可以识别验证码,则需要对验证码形式进行多样化设计。

注!!!!!拿到的页面是只有图片,需要用另一个页面引用图片页面示例:<img src = "xxx.jsp">用户登录时设置验证码代码实现:页面<script type="text/javascript"> function _change() {

var imgEle = document.getElementById("img");

imgEle.src =

"${pageContext.request.contextPath }/user_getVerify.actio n?a="

+ new Date().getTime();

}

</script>

<BODY>

<FORM id=form1 name=form1

action="${pageContext.request.contextPath }/user_login.a ction" method="post">

<TR>

<TD style="HEIGHT: 28px">验证码:</TD>

<TD style="HEIGHT: 28px">

<input type="text" name="verifyCode" size="1"/>

<img id="img"

src="${pageContext.request.contextPath }/user_getVerify. action">

<br/>

<a href="javascript:_change()">换

一张</a>

</TD>

<a href="#"></a>

<TD style="HEIGHT:

28px"><SPAN id=RequiredFieldValidator4

style="FONT-WEIGHT: bold; VISIBILITY: hidden; COLOR: white">请输入验证码

</SPAN></TD></TR>

<TR>

</FORM></BODY>

2.action操作//获得验证码

public void getVerify() throws IOException{

HttpServletRequest

request=ServletActionContext.getRequest();

HttpServletResponse

response=ServletActionContext.getResponse();

VerifyCode vc=new VerifyCode();

BufferedImage image=vc.getImage();//获得图片

request.getSession().setAttribute("session_vcode",vc.g etText());//将验证码内容放在域对象里面

VerifyCode.output(image,

response.getOutputStream());

}

public String login(){

HttpServletRequest

request=ServletActionContext.getRequest();

String sessionCode = (String)

request.getSession().getAttribute("session_vcode");

String paramCode =

request.getParameter("verifyCode");

if(!paramCode.equalsIgnoreCase(sessionCode)){ request.setAttribute("msg", "验证码错误!");

return "login";

}

User userExit=userService.login(user);

if(userExit!=null){

if(!userExit.isState())

{

request.setAttribute("msg", "您尚未激活,请到邮箱"+userExit.getEmail()+"激活!");

return "loginerror";

}

request=ServletActionContext.getRequest();

request.getSession().setAttribute("user", userExit);

return "loginsuccess";

}else{

return "login";

}

}

3.验证码代码实现import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Random;

import javax.imageio.ImageIO;

public class VerifyCode {

private int w = 70;

private int h = 35;

private Random r = new Random();

// {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"}

private String[] fontNames = {"宋体", "华文楷体", "黑体", "微软雅黑", "楷体_GB2312"};

// 可选字符

private String codes =

"23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMN PQRSTUVWXYZ";

// 背景色

相关文档
最新文档