为了防止重复登陆问题,这里写了个例子html
这里我先说一下个人思路:java
首先进入页面会请求某个控制器的index()方法,这段代码就是我粘贴的第二段代码,在请求index()方法以前会进CheckTokenInterceptor.class,进入这个方法建立blogToken,而后把值放入页面的隐藏域里,随后进行登陆操做,登陆时会取blogToken的值,取到返回true,反之返回false,而后就确保重复登陆问题,进行登陆操做。
session
public class CheckTokenInterceptor implements Interceptor{ public void intercept(ActionInvocation ai) { //建立token,这里是一进页面会得到token的一个值,刷新页面值会变化 ai.getController().createToken("blogToken"); ai.invoke(); } }
@Before({CheckTokenInterceptor.class}) public void index(){ ...//这里是第一次进页面出现的一些方法 render("/index.jsp"); } /** * 前台登陆 */ public void login(){ boolean flag = this.validateToken("blogToken");//若是验证是true,则表示第一次登陆,false表示重复登录 if(flag){ User user = getModel(User.class); //把前台须要的值根据getModel()放入一个实体中 String md5Pwd = MD5Encrypt.encode(user.getStr("pwd")); //转换成md5加密格式 User uu = User.dao.checkLogin(user.getStr("account"),md5Pwd); if(uu == null){ render("/index.jsp"); }else { setSessionAttr("user", uu); //往session中赋值 render("/index.jsp");//重定向 } }else{ forwardAction("/user"); } }
这里很重要的一点,页面上jsp
<input type="hidden" name="blogToken" value="${blogToken}" />