Browse Source

tijaio

recovery
wang0018 4 years ago
parent
commit
c2b244f2df
  1. 14
      tall/src/main/java/com/ccsens/tall/annotation/MustLoginTall.java
  2. 103
      tall/src/main/java/com/ccsens/tall/aspect/MustLoginTallAspect.java
  3. 11
      tall/src/main/java/com/ccsens/tall/web/LwbsController.java

14
tall/src/main/java/com/ccsens/tall/annotation/MustLoginTall.java

@ -0,0 +1,14 @@
package com.ccsens.tall.annotation;
import java.lang.annotation.*;
/**
* @description: 用于标识方法需要登录获取userId
* 如果未登录直接返回用户未登录
* @author: wang
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MustLoginTall {
}

103
tall/src/main/java/com/ccsens/tall/aspect/MustLoginTallAspect.java

@ -0,0 +1,103 @@
package com.ccsens.tall.aspect;
import com.ccsens.tall.bean.po.SysUser;
import com.ccsens.tall.bean.vo.MessageVo;
import com.ccsens.tall.service.IUserService;
import com.ccsens.tall.util.RobotUtil;
import com.ccsens.util.*;
import com.ccsens.util.annotation.OperateType;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.wx.WxTemplateMessage;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.SignatureException;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;
@Order(0)
@Slf4j
@Aspect
@Component
public class MustLoginTallAspect {
@Autowired
private IUserService userService;
@Pointcut("@annotation(com.ccsens.tall.annotation.MustLoginTall)")
public void tallAdvice(){
}
@After("tallAdvice()")
public Object tallAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//拿到参数
Object[] args = proceedingJoinPoint.getArgs();
QueryDto dto = args == null || args.length < 1 ? null : (QueryDto) args[0];
//拿到当前得request请求
HttpServletRequest httpServletRequest = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse httpServletResponse = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getResponse();
// Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
final String authHeader = httpServletRequest.getHeader(WebConstant.HEADER_KEY_TOKEN);
if (authHeader == null || !authHeader.startsWith(WebConstant.HEADER_KEY_TOKEN_PREFIX)) {
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenNotFound()));
//return httpServletResponse;
}
final String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
//验证token是否有效
Claims claims = null;
try {
claims = JwtUtil.parseJWT(token, WebConstant.JWT_ACCESS_TOKEN_SECERT);
}catch(SignatureException e){
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenSignatureFail(e.getMessage())));
//return httpServletResponse;
}catch(ExpiredJwtException e){
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenExpire(e.getMessage())));
//return httpServletResponse;
}catch(Exception e){
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenFailed(e.getMessage())));
// return httpServletResponse;
}
//验证用户存根
if(userService.tokenNotExistInCache(Long.valueOf(claims.getSubject()))){
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenStubNotFound()));
// return httpServletResponse;
}
//验证用户是否禁用
SysUser user = userService.getUserById(Long.valueOf(claims.getSubject()));
if(user.getRecStatus() == WebConstant.REC_STATUS.Disabled.value){
HttpServletUtil.responseJson(httpServletResponse,
JacksonUtil.beanToJson(JsonResponse.newInstance().userDisabled()));
// return httpServletResponse;
}
Object proceed = proceedingJoinPoint.proceed();
return proceed;
}
}

11
tall/src/main/java/com/ccsens/tall/web/LwbsController.java

@ -1,6 +1,7 @@
package com.ccsens.tall.web; package com.ccsens.tall.web;
import com.ccsens.cloudutil.annotation.MustLogin; import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.tall.annotation.MustLoginTall;
import com.ccsens.tall.bean.dto.InputDocDto; import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LwbsDto; import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.vo.LwbsVo; import com.ccsens.tall.bean.vo.LwbsVo;
@ -46,4 +47,14 @@ public class LwbsController {
log.info("查询某人下参加的项目的所有的任务"); log.info("查询某人下参加的项目的所有的任务");
return JsonResponse.newInstance().ok(selBylwbs); return JsonResponse.newInstance().ok(selBylwbs);
} }
@MustLoginTall
@ApiOperation(value = "test", notes = "1007:输出")
@RequestMapping(value = "/test", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse test(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByProjectIdToTaskDto> params) {
log.info("查询某人下参加的项目的所有的任务:{}",params);
// List<LwbsVo.SelByProjectIdToTasksVo> selBylwbs= iInputDocService.selByProjectIdToTask(params.getParam(),params.getUserId());
// log.info("查询某人下参加的项目的所有的任务");
System.out.println("走这个");
return JsonResponse.newInstance().ok();
}
} }

Loading…
Cancel
Save