用户登录注册之验证码技术实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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";
// 背景色