| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.matrix.component.redis.RedisClient; |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.RSAUtils; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.dao.SysUsersDao; |
| | | import com.matrix.system.common.init.LocalCache; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | @Component |
| | | public class ApiUserLoginInterceptor implements HandlerInterceptor { |
| | | |
| | | @Autowired |
| | | private RedisClient redisClient; |
| | | |
| | | @Value("${login_private_key}") |
| | | private String privateKey; |
| | | private String privateKey; |
| | | |
| | | private final String TOKEN_HEADER = "Authorization"; |
| | | private final String TOKEN_START_WITH = "Bearer "; |
| | | @Value("${evn}") |
| | | private String evn; |
| | | |
| | | @Autowired |
| | | private SysUsersDao sysUsersDao; |
| | | |
| | | private static final String TOKEN_HEADER = "Authorization"; |
| | | private static final String TOKEN_START_WITH = "Bearer "; |
| | | |
| | | @Override |
| | | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { |
| | | String token = resolveToken(request); |
| | | // if ("dev".equals(evn)) { |
| | | // SysUsers sysUsers = sysUsersDao.selectById(1022L); |
| | | // request.getSession().setAttribute(MatrixConstance.LOGIN_KEY, sysUsers); |
| | | // return true; |
| | | // } |
| | | |
| | | String token = resolveToken(request,privateKey); |
| | | AjaxResult ajaxResult = new AjaxResult(); |
| | | ajaxResult.setStatus(AjaxResult.STATUS_LOGIN_INVALID); |
| | | |
| | |
| | | return false; |
| | | } |
| | | |
| | | String userStr = redisClient.getCachedValue(token); |
| | | redisClient.resetExpire(token); |
| | | if (StringUtils.isBlank(userStr)) { |
| | | SysUsers sysUsers = LocalCache.get(token); |
| | | if (Objects.isNull(sysUsers)) { |
| | | ajaxResult.setInfo("login time out"); |
| | | response.getWriter().write(new ObjectMapper().writeValueAsString(ajaxResult)); |
| | | response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); |
| | | return false; |
| | | } |
| | | |
| | | SysUsers sysUsers = JSONObject.parseObject(userStr, SysUsers.class); |
| | | request.getSession().setAttribute(MatrixConstance.LOGIN_KEY, sysUsers); |
| | | return true; |
| | | } |
| | |
| | | * @param request |
| | | * @return |
| | | */ |
| | | private String resolveToken(HttpServletRequest request) { |
| | | public static String resolveToken(HttpServletRequest request,String privateKey) { |
| | | String headToken = request.getHeader(TOKEN_HEADER); |
| | | String sb = request.getRequestURI(); |
| | | |