From a40ad9a47d99b40282ea6becb8cae78829a25e70 Mon Sep 17 00:00:00 2001 From: phpcjl <phpcjl@gmail.com> Date: 星期四, 05 十二月 2024 11:55:52 +0800 Subject: [PATCH] 1.完成开发门店打分接口 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java | 126 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 0 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java new file mode 100644 index 0000000..16cddbe --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java @@ -0,0 +1,126 @@ +package com.ruoyi.account.filter; + +import com.alibaba.fastjson.JSON; +import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.service.AppUserService; +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 AppUserService appUserService; + + @Lazy + @Resource + private SysUserClient sysUserClient; + + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @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)) { + AppUser appUser = appUserService.getById(userid); + 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); + } + + @Override + public void destroy() { + + } + + + 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; + } + + +} -- Gitblit v1.7.1