fix 修复 DataPermissionHelper 经过 dubbo 调用无法获取 request 问题

2.X
疯狂的狮子Li 3 years ago
parent 019e5fc55a
commit 763c532deb

@ -4,6 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.ServletUtils;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcServiceContext;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap; import java.util.HashMap;
@ -19,7 +21,7 @@ import java.util.Map;
@SuppressWarnings("unchecked cast") @SuppressWarnings("unchecked cast")
public class DataPermissionHelper { public class DataPermissionHelper {
private static final String DATA_PERMISSION_KEY = "data:permission"; public static final String DATA_PERMISSION_KEY = "data:permission";
public static <T> T getVariable(String key) { public static <T> T getVariable(String key) {
Map<String, Object> context = getContext(); Map<String, Object> context = getContext();
@ -34,10 +36,20 @@ public class DataPermissionHelper {
public static Map<String, Object> getContext() { public static Map<String, Object> getContext() {
HttpServletRequest request = ServletUtils.getRequest(); HttpServletRequest request = ServletUtils.getRequest();
Object attribute = request.getAttribute(DATA_PERMISSION_KEY); Object attribute;
if (ObjectUtil.isNull(attribute)) { if (request != null) {
request.setAttribute(DATA_PERMISSION_KEY, new HashMap<>());
attribute = request.getAttribute(DATA_PERMISSION_KEY); attribute = request.getAttribute(DATA_PERMISSION_KEY);
if (ObjectUtil.isNull(attribute)) {
request.setAttribute(DATA_PERMISSION_KEY, new HashMap<>());
attribute = request.getAttribute(DATA_PERMISSION_KEY);
}
} else {
RpcServiceContext context = RpcContext.getServiceContext();
attribute = context.getObjectAttachment(DATA_PERMISSION_KEY);
if (ObjectUtil.isNull(attribute)) {
context.setObjectAttachment(DATA_PERMISSION_KEY, new HashMap<>());
attribute = context.getObjectAttachment(DATA_PERMISSION_KEY);
}
} }
if (attribute instanceof Map) { if (attribute instanceof Map) {
return (Map<String, Object>) attribute; return (Map<String, Object>) attribute;

Loading…
Cancel
Save