diff --git a/src/main/java/com/yingjun/ssm/aop/BindingResultAop.java b/src/main/java/com/yingjun/ssm/aop/BindingResultAop.java index 64c5106b8fb478208164546a7fbc16df5c914d03..07cd30238844d307df7e2ec219f022be4d935240 100644 --- a/src/main/java/com/yingjun/ssm/aop/BindingResultAop.java +++ b/src/main/java/com/yingjun/ssm/aop/BindingResultAop.java @@ -1,6 +1,5 @@ package com.yingjun.ssm.aop; -import com.yingjun.ssm.dto.BaseResult; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -8,12 +7,12 @@ import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import org.springframework.validation.BindingResult; + /** - * @author yingjun + * @author liyunfeng * - * 采用AOP的方式处理参数问题。 + * 采用AOP的方式检查用户是否登录。 */ @Component @Aspect @@ -26,19 +25,8 @@ public class BindingResultAop { @Around("aopMethod()") public Object around(ProceedingJoinPoint joinPoint) throws Throwable{ - LOG.info("before method invoking!"); - BindingResult bindingResult = null; - for(Object arg:joinPoint.getArgs()){ - if(arg instanceof BindingResult){ - bindingResult = (BindingResult) arg; - } - } - if(bindingResult != null){ - if(bindingResult.hasErrors()){ - String errorInfo="["+bindingResult.getFieldError().getField()+"]"+bindingResult.getFieldError().getDefaultMessage(); - return new BaseResult(false, errorInfo); - } - } + LOG.info("采用AOP的方式检查用户是否登录"); + return joinPoint.proceed(); } } diff --git a/src/main/java/com/yingjun/ssm/util/LoginContext.java b/src/main/java/com/yingjun/ssm/util/LoginContext.java new file mode 100644 index 0000000000000000000000000000000000000000..ecf3814318b7379ab30e74356ba2fa6bb5131d92 --- /dev/null +++ b/src/main/java/com/yingjun/ssm/util/LoginContext.java @@ -0,0 +1,66 @@ +package com.yingjun.ssm.util; + + +/** + * @author liyunfeng + * 保存用户的登录信息 + */ +public class LoginContext { + + private ThreadLocal threadLocal = new ThreadLocal<>(); + /** + * 主键id + */ + private Long id; + /** + * 密码 + */ + private String password; + /** + * 姓名 + */ + private String name; + /** + * 电子邮箱 + */ + private String email; + + /** + * 移除当前线程中的变量值 + */ + public void remove(){ + threadLocal.remove(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/yingjun/ssm/web/UserController.java b/src/main/java/com/yingjun/ssm/web/UserController.java index 77e6b1cdfe78c2e58e727f122fbd5f5ec6a18379..3203882068d3461ead493b2601a22e01c9550edb 100644 --- a/src/main/java/com/yingjun/ssm/web/UserController.java +++ b/src/main/java/com/yingjun/ssm/web/UserController.java @@ -6,12 +6,15 @@ import com.yingjun.ssm.entity.User; import com.yingjun.ssm.enums.ResultEnum; import com.yingjun.ssm.exception.BizException; import com.yingjun.ssm.service.UserService; +import com.yingjun.ssm.util.LoginContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpSession; + /** * 用户 @@ -42,6 +45,7 @@ public class UserController { public BaseResult userLogin(User user) { try { userService.checkUserLogin(user); + } catch (BizException e) { return new BaseResult<>(false, e.getMessage()); } catch (Exception e) {