简单说明:
用户登录缓存到session,用户登录错误次数超过5次,等待1分钟
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ly.cloud.soc.entity.login.UserLoginInfo;
/**
* @author krs
* @date 创建时间2017年10月20日 上午11:33:25
* @describe 处理用户登录的信息
*/
public class SessionUtils {
private static final String SESSION_USER_LOGIN = "session_user_login_";
private static int LIMIT_TIME = 1*60*1000; //登录错误的限制
/**
*
*@describe 往session添加用户登录的错误信息
*@param request
*@param response
*@param username
*/
public static void addUserError(HttpServletRequest request, HttpServletResponse response, String username) {
HttpSession session = request.getSession();
String key = SESSION_USER_LOGIN + username;
UserLoginInfo uli = (UserLoginInfo) session.getAttribute(key);
if(uli != null){
//第5次就不添加
if(uli.getCount() < 6){
uli.setCount(uli.getCount()+1);
uli.setLoginTime(new Date());
}
}else{
uli = new UserLoginInfo();
uli.setCount(1);
uli.setUsername(username);
uli.setLoginTime(new Date());
}
//更新sesion里面的值
session.setAttribute(key, uli);
}
/**
*
*@describe 验证用户用户是否登录失败超5次。时间过5分钟允许登录
*@param request
*@param response
*@param yhzh
*@return
*/
public static boolean checkUserLogin(HttpServletRequest request, HttpServletResponse response, String username) {
boolean flag = false;
HttpSession session = request.getSession();
String key = SESSION_USER_LOGIN + username;
UserLoginInfo uli = (UserLoginInfo) session.getAttribute(key);
if(uli != null){
Date loginTime = uli.getLoginTime();
if(uli.getCount() >= 5 ){
//小于5分钟
boolean time = (System.currentTimeMillis()-loginTime.getTime()) <= LIMIT_TIME;
if(time){
flag = true;
}else{
//超过5分钟,清空session
session.setAttribute(key, null);
}
}
}
return flag;
}
}
import java.util.Date;
/**
* @author krs
* @date 创建时间2017年10月20日 上午11:50:45
* @describe 用户登录信息
*/
public class UserLoginInfo {
//用户登录账号
private String username;
//用户最后登录时间
private Date loginTime;
//用户登录错误的次数
private int count;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getLoginTime() {
return loginTime;
}
public void setLoginTime(Date loginTime) {
this.loginTime = loginTime;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}