This commit is contained in:
hongqiaowei
2022-07-26 15:16:08 +08:00
parent 13220d35b5
commit ebaee5b62b
14 changed files with 629 additions and 92 deletions

View File

@@ -17,6 +17,16 @@
</properties>
<dependencies>
<dependency>
<groupId>com.github.seancfoley</groupId>
<artifactId>ipaddress</artifactId>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
</dependency>
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>

View File

@@ -68,7 +68,10 @@ public class FizzServerHttpRequestDecorator extends ServerHttpRequestDecorator {
public FizzServerHttpRequestDecorator(ServerHttpRequest delegate) {
super(delegate);
this.delegate = (AbstractServerHttpRequest) delegate;
nativeRequest = this.delegate.getNativeRequest();
try {
nativeRequest = this.delegate.getNativeRequest();
} catch (IllegalStateException e) {
}
}
@Override
@@ -120,6 +123,9 @@ public class FizzServerHttpRequestDecorator extends ServerHttpRequestDecorator {
}
private MultiValueMap<String, HttpCookie> initCookies() {
if (nativeRequest == null) {
return null;
}
MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>();
for (CharSequence name : nativeRequest.cookies().keySet()) {
for (Cookie cookie : nativeRequest.cookies().get(name)) {

View File

@@ -0,0 +1,47 @@
package we;
import ognl.Ognl;
import org.junit.jupiter.api.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
class OgnlTests {
@Test
void testGet() throws Exception {
Root root = new Root();
Map<String, Object> query = new HashMap<>();
query.put("version", "v2");
query.put("userId", 1234563);
query.put("age", 25);
root.put("query", query);
Map<String, Object> client = new HashMap<>();
client.put("ip", "10.2.3.4");
client.put("ip2", "10.2.3.88");
root.put("client", client);
Boolean result = (Boolean) Ognl.getValue("checkIp(client.ip2) && (query.version == 'v2' || query.age < 20) and query.age in (22,25,30) && client.ip=='10.2.3.4'", root);
System.out.println(result);
assertEquals(true, result);
}
}
class Root extends HashMap {
public Root() {
}
public boolean checkIp(String ip) {
System.out.println(ip);
return ip.equals("10.2.3.88");
}
}