首页 > 其他分享 >注解

注解

时间:2022-08-29 15:56:33浏览次数:35  
标签:LoginUserUtil isOk request servletResponse token 注解 null

public class WxJwtFilter implements Filter {

@Autowired
private IUcUserService userService;
@Autowired
RequestMappingHandlerMapping requestMappingHandlerMapping;


@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
LoginUserUtil.removeUser();
// LoginUserUtil.removeTenantId();
String tenantId = request.getHeader(Constants.MP_APP_ID_HEADER_NAME);
if (StringUtils.isNotEmpty(tenantId)){
LoginUserUtil.setCurrentTenantId(tenantId);
}
boolean isOk = false;
try {
RequiresAuthentication requiresAuthentication = null;
HandlerExecutionChain handlerExecutionChain = requestMappingHandlerMapping.getHandler(request);
Object object = null;
if (handlerExecutionChain != null){
object = handlerExecutionChain.getHandler();
}
if (object instanceof HandlerMethod){
HandlerMethod handler = (HandlerMethod) object;
requiresAuthentication = handler.getMethodAnnotation(RequiresAuthentication.class);
}

if (requiresAuthentication != null){
String token = request.getHeader(Constants.H5_TOKEN_HEADER_NAME);
if (StringUtils.isEmpty(token)){
token = request.getParameter(Constants.H5_TOKEN_HEADER_NAME);
}
if (StringUtils.isEmpty(token)){
toJsonResponse(servletResponse, ResponseUtil.unlogin());
}else {
log.info("用户token:{}", token);
try {
String userId = JwtHelper.getInstance().getSubjectFromToken(token);
UcUser user = userService.getById(Integer.parseInt(userId));
if (user != null){
LoginUserUtil.setCurrentUser(user);
isOk = true;
}
} catch (Exception e) {
log.error(e.getLocalizedMessage(), e);
isOk = false;
}
if (isOk){
filterChain.doFilter(servletRequest, servletResponse);
}else {
toJsonResponse(servletResponse, ResponseUtil.unlogin());
}
}

}else {
filterChain.doFilter(servletRequest, servletResponse);
}
} catch (Exception e) {
throw new ServletException(e);
}
}

private void toJsonResponse(ServletResponse servletResponse, ResponseWrapper responseWrapper) {
try {
servletResponse.setContentType("application/json;charset=UTF-8");
JacksonUtil.getObjectMapper().writeValue(servletResponse.getOutputStream(), responseWrapper);
} catch (IOException e) {
log.error(e.getLocalizedMessage(), e);
}
}
}

标签:LoginUserUtil,isOk,request,servletResponse,token,注解,null
From: https://www.cnblogs.com/gbzl/p/16636207.html

相关文章

  • 注解-解析注解以及注解案例
    解析注解在程序中使用(解析)注解:获取注解中定义的属性值​1.获取注解定义的位置的对象(Class,Method,Field)​2.获取指定的注解:getAnnotation(Class)//其实就......
  • Spring内置的字段校验注解
    注解用法适用类型@Null被注解的字段必须为空@NotNull被注解的字段必须不为空@NotBlank带注解的元素不能为null,并且必须至少包含一个非空白字符@N......
  • 初步了解注解
    注解一、内置注解注解用法@Overrite方法重写时,在方法上添加满足重写的语法要求@Deprecated表示该方法已过时@SuppressWarnings编译器去忽略注解中声明......
  • 【博学谷学习记录】超强总结,用心分享。SSM框架的注解开发
    1.MyBatis使用的注解@Select注解:查询操作的,加在声明方法上@Insert注解:插入操作@Update注解:更新操作@Delect注解:删除操作@Param注解:作用是给参数......
  • 注解-自定义注解-属性定义以及元注解
    自定义注解-属性定义属性:接口中的抽象方法要求:1、属性的返回值类型基本数据类型String枚举注解......
  • Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
    1、生命周期**Spring容器的bean**的生命周期;1.1默认生命周期1.1.1生命周期调用构造方法,创建实例对象;set方法,给实例对象赋值;init初始化方法初始化对象;(手......
  • Spring @Repository 注解
    Spring的项目严重依赖注解。@Repository 注解在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支......
  • Spring 最常用的几个注解
    大家都知道Spring严重依赖注解。实际开发的时候,我们用得最多的可能就是下面几个注解了。注解用途@Component最最普通的注解,表示这个类可以被注入到Spring容......
  • Spring @Autowired 注解静态变量
    最近应该项目的需要,需要使用一个工具类来访问数据库。但是这个工具类又被定义成静态访问了。我们也需要设置一个静态变量来访问数据库。@Autowiredprivatesta......
  • springBoot 获取注解参数的原理
    springBoot获取注解参数的原理原理图先得到请求的request在获取可以处理请求的方法的Mapping映射器DispatcherServlet中的doDispatch方法//De......