首页 > 代码库 > Jfinal重复登录问题

Jfinal重复登录问题

  为了防止重复登录问题,这里写了个例子

这里我先说一下我的思路:

    首先进入页面会请求某个控制器的index()方法,这段代码就是我粘贴的第二段代码,在请求index()方法之前会进CheckTokenInterceptor.class,进入这个方法创建blogToken,然后把值放入页面的隐藏域里,随后进行登录操作,登录时会取blogToken的值,取到返回true,反之返回false,然后就确保重复登录问题,进行登录操作。

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");
        }
    }

这里很重要的一点,页面上

<input type="hidden" name="blogToken" value="http://www.mamicode.com/${blogToken}" />


Jfinal重复登录问题