标签:cage
package com.lavasoft.ntv.web.common;
import com.github.cage.Cage;
import com.github.cage.IGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* Created by Administrator on 14-5-5.
*
* @author leizhimin 14-5-5 下午7:00
*/
@Component
public class MyCage extends Cage {
public MyCage() {
}
@Autowired
public MyCage(@Qualifier("myTokenGenerator") IGenerator<String> myTokenGenerator) {
super(null, null, null, null, null, myTokenGenerator, null);
}
}package com.lavasoft.ntv.web.common;
import com.github.cage.IGenerator;
import org.springframework.stereotype.Component;
import java.util.Random;
/**
* 验证码生成器
*
* @author leizhimin 14-5-5 下午2:42
*/
@Component("myTokenGenerator")
public class MyTokenGenerator implements IGenerator<String> {
private int length = 4;
private String charsetdir = "23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ";
private static final Random r = new Random();
public MyTokenGenerator() {
}
public MyTokenGenerator(int length, String charsetdir) {
this.length = length;
this.charsetdir = charsetdir;
}
@Override
public String next() {
StringBuffer sb = new StringBuffer();
int len = charsetdir.length();
for (int i = 0; i < length; i++) {
sb.append(charsetdir.charAt(r.nextInt(len - 1)));
}
return sb.toString();
}
public static void main(String[] args) {
MyTokenGenerator t = new MyTokenGenerator();
for (int i = 0; i < 100; i++) {
System.out.println(t.next());
}
}
}package com.lavasoft.ntv.web;
import com.lavasoft.ntv.web.common.MyCage;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* Created by Administrator on 14-5-4.
*
* @author leizhimin 14-5-4 上午11:00
*/
@Controller
public class LoginController {
@Resource
private MyCage myCage;
@RequestMapping("/crimg")
private void createValidateImg(HttpServletRequest request,HttpServletResponse response) throws IOException {
HttpSession session = request.getSession(false);
if (session == null) {
session=request.getSession();
}
String token = myCage.getTokenGenerator().next();
System.out.println("当前的SessionID=" + session.getId() + ",验证码=" + token);
session.setAttribute("captchaToken", token);
setResponseHeaders(response);
myCage.draw(token, response.getOutputStream());
}
protected void setResponseHeaders(HttpServletResponse response) {
response.setContentType("image/" + myCage.getFormat());
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
long time = System.currentTimeMillis();
response.setDateHeader("Last-Modified", time);
response.setDateHeader("Date", time);
response.setDateHeader("Expires", time);
}
@RequestMapping("/login")
private String LoginAction(HttpServletRequest request,
HttpServletResponse response,
String username,
String password,
@RequestParam(value = "yzm") String yzm) {
boolean flag = false;
HttpSession session = request.getSession(false);
String token = (String) session.getAttribute("captchaToken");
System.out.println("当前的SessionID=" + session.getId() + ",Session中的验证码=" + session.getAttribute("captchaToken") + ",输入的验证码:" + yzm);
if(token!=null && token.equalsIgnoreCase(yzm)){
session.removeAttribute("captchaToken");
return "success";
}else{
return "error";
}
}
}<%--
Created by IntelliJ IDEA.
User: leizhimin 14-5-5 下午4:57
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
<script type="text/javascript" src="../backui/jquery/jquery-1.5.2.min.js"></script>
<script type="text/javascript">
function change(obj) {
obj.src = "/ntv/crimg?" + Math.random();
}
$(function () {
$("#bt1").click(function () {
$.post("/ntv/login", {yzm: $("#yzm").val()},
function (data) {
$("#msg").html(data);
}
);
})
})
</script>
</head>
<body>
验证码:<input id="yzm" type="text"/><br>
<img src="/ntv/crimg" id="bt1" type="button" value="提交校验"/><br>
<div id="msg"></div>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
验证通过!
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
验证码校验失败!
</body>
</html><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven/>
<context:annotation-config/>
<context:component-scan base-package="com.lavasoft.ntv.web"/>
<mvc:resources mapping="/backui/**" location="/backui/"/>
<mvc:resources mapping="/frontui/**" location="/frontui/"/>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="parameterName" value="format" />
<property name="ignoreAcceptHeader" value="true" /> <!-- 忽略HttpHeader:Accept -->
<property name="mediaTypes">
<value>
json=application/json
xml=application/xml
html=text/html
</value>
</property>
<property name="defaultContentType" value="text/html" />
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="prettyPrint" value="true"/>
<property name="extractValueFromSingleKeyModel" value="true"/>
</bean>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="contentType" value="text/html;charset=UTF-8" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--<import resource="classpath*:framework/spring-front.xml"/>-->
</beans>2014-05-05 22:00:24 JRebel: Reloading class ‘com.lavasoft.ntv.web.LoginController‘. 2014-05-05 22:03:09 JRebel: Reconfiguring bean ‘myCage‘ [com.lavasoft.ntv.web.common.MyCage] 2014-05-05 22:03:09 JRebel: Reconfiguring bean ‘loginController‘ [com.lavasoft.ntv.web.LoginController] 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=KRDE 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=S5zM 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=PgUi 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=H8v2 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=tWy4 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=Hham 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=ILd5 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=KBgY 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,Session中的验证码=KBgY,输入的验证码:kbgy 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,Session中的验证码=null,输入的验证码:kbgy 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=B4t9 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=PTD9 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=Xc4U 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=sKF6 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=cEbh 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=bFQx 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=vwpW 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=MeVE 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,验证码=A9Xz 当前的SessionID=5B94D1862193DD6C309BB200D0D9E03F,Session中的验证码=A9Xz,输入的验证码:13213
本文出自 “熔 岩” 博客,转载请与作者联系!
标签:cage
原文地址:http://lavasoft.blog.51cto.com/62575/1406903