mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-15 07:03:42 +08:00
feat:
黑名单
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.abin.mallchat.custom.common.config;
|
||||
|
||||
import com.abin.mallchat.custom.common.intecepter.BlackInterceptor;
|
||||
import com.abin.mallchat.custom.common.intecepter.CollectorInterceptor;
|
||||
import com.abin.mallchat.custom.common.intecepter.TokenInterceptor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -19,11 +20,15 @@ public class InterceptorConfig implements WebMvcConfigurer {
|
||||
private TokenInterceptor tokenInterceptor;
|
||||
@Autowired
|
||||
private CollectorInterceptor collectorInterceptor;
|
||||
@Autowired
|
||||
private BlackInterceptor blackInterceptor;
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(tokenInterceptor)
|
||||
.addPathPatterns("/capi/**");
|
||||
registry.addInterceptor(collectorInterceptor)
|
||||
.addPathPatterns("/capi/**");
|
||||
registry.addInterceptor(blackInterceptor)
|
||||
.addPathPatterns("/capi/**");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.abin.mallchat.custom.common.intecepter;
|
||||
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import com.abin.mallchat.common.common.domain.dto.RequestInfo;
|
||||
import com.abin.mallchat.common.common.exception.HttpErrorEnum;
|
||||
import com.abin.mallchat.common.common.utils.RequestHolder;
|
||||
import com.abin.mallchat.common.user.domain.enums.BlackTypeEnum;
|
||||
import com.abin.mallchat.common.user.service.cache.UserCache;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 黑名单拦截
|
||||
*/
|
||||
@Order(2)
|
||||
@Slf4j
|
||||
@Component
|
||||
public class BlackInterceptor implements HandlerInterceptor{
|
||||
|
||||
@Autowired
|
||||
private UserCache userCache;
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
Map<Integer, Set<String>> blackMap = userCache.getBlackMap();
|
||||
RequestInfo requestInfo = RequestHolder.get();
|
||||
if(inBlackList(requestInfo.getUid(),blackMap.get(BlackTypeEnum.UID.getType()))){
|
||||
HttpErrorEnum.ACCESS_DENIED.sendHttpError(response);
|
||||
return false;
|
||||
}
|
||||
if(inBlackList(requestInfo.getIp(),blackMap.get(BlackTypeEnum.IP.getType()))){
|
||||
HttpErrorEnum.ACCESS_DENIED.sendHttpError(response);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private boolean inBlackList(Object target, Set<String> blackSet){
|
||||
if(Objects.isNull(target)||Objects.isNull(blackSet)){
|
||||
return false;
|
||||
}
|
||||
return blackSet.contains(target.toString());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,16 +17,10 @@ import java.util.Optional;
|
||||
/**
|
||||
* 信息收集的拦截器
|
||||
*/
|
||||
@Order
|
||||
@Order(1)
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CollectorInterceptor implements HandlerInterceptor, WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(this)
|
||||
.addPathPatterns("/**");
|
||||
}
|
||||
public class CollectorInterceptor implements HandlerInterceptor{
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user