package cn.jfinalbbs.interceptor; import cn.jfinalbbs.common.Constants; import cn.jfinalbbs.user.AdminUser; import cn.jfinalbbs.utils.StrUtil; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.UnsupportedEncodingException; /** * Created by liuyang on 15/4/9. */ public class AdminUserInterceptor implements Interceptor { public void intercept(Invocation ai) { HttpServletRequest request = ai.getController().getRequest(); HttpSession session = ai.getController().getSession(); String namePwd = ai.getController().getCookie(Constants.COOKIE_ADMIN_TOKEN); AdminUser adminUser = (AdminUser) session.getAttribute(Constants.SESSION_ADMIN_USER); if(StrUtil.isBlank(namePwd) && adminUser != null) { ai.getController().setCookie(Constants.COOKIE_ADMIN_TOKEN, StrUtil.getEncryptionToken(adminUser.get("username") + "@&@" + adminUser.get("password")), 30 * 60 * 60 * 24); } else if(!StrUtil.isBlank(namePwd) && adminUser == null) { String[] strings = StrUtil.getDecryptToken(namePwd).split("@&@"); adminUser = AdminUser.me.login(strings[0], strings[1]); session.setAttribute(Constants.SESSION_ADMIN_USER, adminUser); } if(StrUtil.isBlank(namePwd) && adminUser == null) { String uri = request.getRequestURI(); String param = ""; if (request.getQueryString() != null) { try { param = new String(request.getQueryString().getBytes("ISO8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } if (!param.equals("")) uri += "?" + param; session.setAttribute(Constants.ADMIN_BEFORE_URL, uri); ai.getController().redirect(Constants.getBaseUrl() + "/adminlogin"); } else { ai.invoke(); } } }