| | |
| | | //package com.ruoyi.other.filter; |
| | | // |
| | | //import com.alibaba.fastjson.JSON; |
| | | //import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | //import com.ruoyi.account.api.model.TAppUser; |
| | | //import com.ruoyi.common.core.constant.TokenConstants; |
| | | //import com.ruoyi.common.core.domain.R; |
| | | //import com.ruoyi.common.core.utils.JwtUtils; |
| | | //import com.ruoyi.common.core.utils.StringUtils; |
| | | //import com.ruoyi.system.api.domain.SysUser; |
| | | //import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | //import io.jsonwebtoken.Claims; |
| | | //import org.apache.logging.log4j.core.config.Order; |
| | | //import org.slf4j.Logger; |
| | | //import org.slf4j.LoggerFactory; |
| | | //import org.springframework.context.annotation.Lazy; |
| | | //import org.springframework.http.HttpHeaders; |
| | | //import org.springframework.http.HttpStatus; |
| | | //import org.springframework.http.MediaType; |
| | | //import org.springframework.stereotype.Component; |
| | | // |
| | | //import javax.annotation.Resource; |
| | | //import javax.servlet.*; |
| | | //import javax.servlet.http.HttpServletRequest; |
| | | //import javax.servlet.http.HttpServletResponse; |
| | | //import java.io.IOException; |
| | | //import java.io.PrintWriter; |
| | | // |
| | | ///** |
| | | // * @author zhibing.pu |
| | | // * @Date 2024/8/23 11:22 |
| | | // */ |
| | | //@Order(-200) |
| | | //@Component |
| | | //public class AuthFilter implements Filter { |
| | | // private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); |
| | | // |
| | | // @Lazy |
| | | // @Resource |
| | | // private AppUserClient appUserClient; |
| | | // |
| | | // @Lazy |
| | | // @Resource |
| | | // private SysUserClient sysUserClient; |
| | | // |
| | | // |
| | | // @Override |
| | | // public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
| | | // HttpServletRequest request = (HttpServletRequest) servletRequest; |
| | | // HttpServletResponse response = (HttpServletResponse) servletResponse; |
| | | // String token = getToken(request); |
| | | // Claims claims = JwtUtils.parseToken(token); |
| | | // String userid = JwtUtils.getUserId(claims); |
| | | // String userType = JwtUtils.getUserType(claims); |
| | | // //管理后台用户 |
| | | // if ("system".equals(userType)) { |
| | | // SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); |
| | | // if(null == sysUser || "2".equals(sysUser.getDelFlag())){ |
| | | // log.error("[账户异常处理]请求账户id:{}", userid); |
| | | // unauthorizedResponse(response,"无效的账户"); |
| | | // return; |
| | | // } |
| | | // if("1".equals(sysUser.getStatus())){ |
| | | // log.error("[账户异常处理]请求账户id:{}", userid); |
| | | // unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); |
| | | // return; |
| | | // } |
| | | // } |
| | | // //小程序用户 |
| | | // if ("applet".equals(userType)) { |
| | | // TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); |
| | | // if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ |
| | | // log.error("[账户异常处理]请求账户id:{}", userid); |
| | | // unauthorizedResponse(response,"无效的账户"); |
| | | // return; |
| | | // } |
| | | // if(2 == appUser.getStatus()){ |
| | | // log.error("[账户异常处理]请求账户id:{}", userid); |
| | | // unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); |
| | | // return; |
| | | // } |
| | | // } |
| | | // filterChain.doFilter(request, response); |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // private void unauthorizedResponse(HttpServletResponse response, String msg) { |
| | | // response.setStatus(HttpStatus.OK.value()); |
| | | // response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); |
| | | // PrintWriter writer = null; |
| | | // try { |
| | | // writer = response.getWriter(); |
| | | // } catch (IOException e) { |
| | | // throw new RuntimeException(e); |
| | | // } |
| | | // writer.println(JSON.toJSONString(R.fail(msg))); |
| | | // writer.flush(); |
| | | // writer.close(); |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // /** |
| | | // * 获取请求token |
| | | // */ |
| | | // private String getToken(HttpServletRequest request) { |
| | | // String token = request.getHeader(TokenConstants.AUTHENTICATION); |
| | | // // 如果前端设置了令牌前缀,则裁剪掉前缀 |
| | | // if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { |
| | | // token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); |
| | | // } |
| | | // return token; |
| | | // } |
| | | // |
| | | // |
| | | //} |
| | | package com.ruoyi.other.filter; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.model.TAppUser; |
| | | import com.ruoyi.common.core.constant.TokenConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import org.apache.logging.log4j.core.config.Order; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.*; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.io.PrintWriter; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2024/8/23 11:22 |
| | | */ |
| | | @Order(-200) |
| | | @Component |
| | | public class AuthFilter implements Filter { |
| | | private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); |
| | | |
| | | @Lazy |
| | | @Resource |
| | | private AppUserClient appUserClient; |
| | | |
| | | @Lazy |
| | | @Resource |
| | | private SysUserClient sysUserClient; |
| | | |
| | | |
| | | @Override |
| | | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
| | | HttpServletRequest request = (HttpServletRequest) servletRequest; |
| | | HttpServletResponse response = (HttpServletResponse) servletResponse; |
| | | String userid = request.getHeader("user_id"); |
| | | if(StringUtils.isEmpty(userid)){ |
| | | filterChain.doFilter(request, response); |
| | | return; |
| | | } |
| | | String userType = request.getHeader("user_type"); |
| | | //管理后台用户 |
| | | if ("system".equals(userType)) { |
| | | SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); |
| | | if(null == sysUser || "2".equals(sysUser.getDelFlag())){ |
| | | log.error("[账户异常处理]请求账户id:{}", userid); |
| | | unauthorizedResponse(response,"无效的账户"); |
| | | return; |
| | | } |
| | | if("1".equals(sysUser.getStatus())){ |
| | | log.error("[账户异常处理]请求账户id:{}", userid); |
| | | unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); |
| | | return; |
| | | } |
| | | } |
| | | //小程序用户 |
| | | if ("applet".equals(userType)) { |
| | | TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); |
| | | if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ |
| | | log.error("[账户异常处理]请求账户id:{}", userid); |
| | | unauthorizedResponse(response,"无效的账户"); |
| | | return; |
| | | } |
| | | if(2 == appUser.getStatus()){ |
| | | log.error("[账户异常处理]请求账户id:{}", userid); |
| | | unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); |
| | | return; |
| | | } |
| | | } |
| | | filterChain.doFilter(request, response); |
| | | } |
| | | |
| | | |
| | | |
| | | private void unauthorizedResponse(HttpServletResponse response, String msg) { |
| | | response.setStatus(HttpStatus.OK.value()); |
| | | response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); |
| | | PrintWriter writer = null; |
| | | try { |
| | | writer = response.getWriter(); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | writer.println(JSON.toJSONString(R.fail(msg))); |
| | | writer.flush(); |
| | | writer.close(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取请求token |
| | | */ |
| | | private String getToken(HttpServletRequest request) { |
| | | String token = request.getHeader(TokenConstants.AUTHENTICATION); |
| | | // 如果前端设置了令牌前缀,则裁剪掉前缀 |
| | | if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { |
| | | token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); |
| | | } |
| | | return token; |
| | | } |
| | | |
| | | |
| | | } |