防止重复提交

来源:互联网 发布:java 内存泄露检测 编辑:程序博客网 时间:2024/05/29 16:30
/** * Token * Created by Administrator on 2017/4/27. *  防止重复提交注解,用于方法上 *  在新建页面方法上,设置needSaveToken()为true,此时拦截器会在Session中保存一个token, *  * *********************************************** *  同时需要在新建的页面中添加 *  <input type="hidden" name="token" value="${token}"> *  保存方法需要验证重复提交的,设置needRemoveToken为true * *********************************************** *   * 此时会在拦截器中验证是否重复提交 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Token {    boolean needSaveToken() default false;    boolean needRemoveToken() default false;}添加拦截器

package com.nroad.interceptor;

import com.nroad.dto.AuthToken;
import com.nroad.service.UserService;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
* AuthInterceptor
* Created by Administrator on 2017/4/21.
* 身份验证拦截器
*/
public class AuthInterceptor extends HandlerInterceptorAdapter {

@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {    HttpSession session = request.getSession();

// if (handler instanceof HandlerMethod) {
// HandlerMethod handlerMethod = (HandlerMethod) handler;
//获取身份令牌
AuthToken at = (AuthToken) session.getAttribute(AuthToken.SESSION_NAME);
//检查身份令牌
if (null == at || null == at.getUser()) {
//登陆验证未通过 ,返回到登陆界面
response.sendRedirect(“/”);
return false;
}
//检查session
HttpSession httpSession = UserService.USER_SESSION.get(at.getUser().getUsername());
if (!httpSession.getId().equals(session.getId())){
//账号已异地登陆
session.invalidate();
response.sendRedirect(“/?loginExce01”);
return false;
}
//登陆验证通过.流程继续
return true;
// }
// return true;
}
}
“`

原创粉丝点击