From 88b54772dbcf5ecab1e2316e4e4626ac901b8908 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期二, 22 一月 2019 15:58:24 +0800 Subject: [PATCH] 邀请码添加返回状态 --- fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java | 111 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 75 insertions(+), 36 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java b/fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java index 7f3a045..240026f 100644 --- a/fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java +++ b/fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java @@ -2,7 +2,9 @@ import java.io.IOException; import java.lang.reflect.Method; +import java.net.URLDecoder; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -14,69 +16,106 @@ import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.common.AdminUser; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.AdminUserService; +import com.yeshi.fanli.util.AESUtil; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.annotation.RequestNoLogin; -import org.yeshi.utils.JsonUtil; + +import net.sf.json.JSONObject; @Component @Aspect public class LoginAspect { - -// @Around("execution(public * com.yeshi.fanli.controller.admin.*.*(..))") + + @Resource + private AdminUserService adminUserService; + + @Around("execution(public * com.yeshi.fanli.controller.admin.*.*(..))") public Object verifyLoginState(ProceedingJoinPoint joinPoint) throws IOException { - + Signature signature = joinPoint.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; Method targetMethod = methodSignature.getMethod(); - - ServletRequestAttributes servletContainer = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); - - HttpServletRequest request = servletContainer.getRequest(); - - - AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); - - if(admin==null){ - Method realMethod=null; - try { - realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(), - targetMethod.getParameterTypes()); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } - //鍒ゆ柇鏄惁鏈夊拷鐣ラ獙璇佺殑娉ㄨВ - if (realMethod==null||!realMethod.isAnnotationPresent(RequestNoLogin.class)) - { - HttpServletResponse response = servletContainer.getResponse(); + ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder + .getRequestAttributes(); + + HttpServletRequest request = servletContainer.getRequest(); + + AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); + + if (admin == null) { + + String from = request.getParameter("from"); + // 閭欢H5鏉ユ簮鐨勪笉鍒ゆ柇鏄惁鐧诲綍 + if ("emailh5".equalsIgnoreCase(from)) { String callback = request.getParameter("callback"); - if (StringUtil.isNullOrEmpty(callback)) { - response.getWriter().print(JsonUtil.loadFalseResult(1, "璇峰厛鐧诲綍")); + String signAES = request.getParameter("sign"); + if (signAES != null && signAES.contains("%")) + signAES = URLDecoder.decode(request.getParameter("sign"), "UTF-8"); + String sign = AESUtil.decrypt(signAES, Constant.ADMINH5_AESKEY); + if (!StringUtil.isNullOrEmpty(sign)) { + LogHelper.error("H5瀹℃牳绛惧悕:" + sign); + JSONObject json = JSONObject.fromObject(sign); + long time = json.optLong("timeStamp"); + long adminId = json.optLong("adminId"); + AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId); + // 1涓皬鏃堕摼鎺ュけ鏁� + if (System.currentTimeMillis() - time > 1000 * 60 * 60 || adminUser == null) { + servletContainer.getResponse().getWriter() + .print(callback + "(" + JsonUtil.loadFalseResult(2, "閾炬帴澶辨晥") + ")"); + return null; + } else { + request.getSession().setAttribute(Constant.SESSION_ADMIN, adminUser); + request.getSession().setAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT, "1"); + } } else { - response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(1, "璇峰厛鐧诲綍") + ")"); + servletContainer.getResponse().getWriter() + .print(callback + "(" + JsonUtil.loadFalseResult(3, "閾炬帴澶辨晥") + ")"); + return null; } - - return null; + + } else { + Method realMethod = null; + try { + realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(), + targetMethod.getParameterTypes()); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } + + // 鍒ゆ柇鏄惁鏈夊拷鐣ラ獙璇佺殑娉ㄨВ + if (realMethod == null || !realMethod.isAnnotationPresent(RequestNoLogin.class)) { + HttpServletResponse response = servletContainer.getResponse(); + String callback = request.getParameter("callback"); + if (StringUtil.isNullOrEmpty(callback)) { + response.getWriter().print(JsonUtil.loadFalseResult(1, "璇峰厛鐧诲綍")); + } else { + response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(1, "璇峰厛鐧诲綍") + ")"); + } + + return null; + } } } - + Object[] args = joinPoint.getArgs(); Object obj = null; - + try { obj = joinPoint.proceed(args); } catch (Throwable e) { e.printStackTrace(); } - + return obj; } - - } -- Gitblit v1.8.0