hutool工具包中的工具方法
BeanUtil.copyProperties(user, UserDTO.class)
@Override
public Result login(LoginFormDTO loginFormDTO, HttpSession session) {
//校验手机号
if (RegexUtils.isPhoneInvalid(loginFormDTO.getPhone())) {
return Result.fail("手机号无效");
}
//校验验证码
String cacheCode = session.getAttribute("code").toString();
String code = session.getAttribute("code").toString();
if (code == null || !code.equals(cacheCode)) {
return Result.fail("验证码错误");
}
//根据手机号查询用户
User user = query().eq("phone", loginFormDTO.getPhone()).one();
if (user == null) {
//用户不存在则创建用户
user = createUser(loginFormDTO.getPhone());
}
//将用户放入session
session.setAttribute("user", BeanUtil.copyProperties(user, UserDTO.class));
//返回
return Result.ok();
}
package com.xkj.org.interceptor;
import com.xkj.org.dto.UserDTO;
import com.xkj.org.utils.UserHolder;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//1.获取session中的user
UserDTO userDTO = (UserDTO)request.getSession().getAttribute("user");
//2.判断用户是否存在
if (userDTO == null) {
//3.不存在,拦截, 401未授权
response.setStatus(401);
return false;
}
//4.存在,保存用户信息到ThreadLocal
UserHolder.saveUser(userDTO);
//5.放行
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//请求执行完毕,释放内存,threadlocal避免内存泄漏
UserHolder.removeUser();
}
}
@GetMapping("/me")
public Result me() {
UserDTO user = UserHolder.getUser();
return Result.ok(user);
}