Skip to content

Commit 5d9feb1

Browse files
committed
Server: 新增支持自动读取数据库 Access 表来配置权限
1 parent d9c4a46 commit 5d9feb1

File tree

2 files changed

+86
-17
lines changed

2 files changed

+86
-17
lines changed

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/APIJSONApplication.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ public static void main(String[] args) throws Exception {
5858
}
5959
System.out.println("\n完成测试:请求校验 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
6060

61+
try {
62+
DemoVerifier.init();
63+
} catch (Exception e) {
64+
e.printStackTrace();
65+
}
66+
67+
6168
System.out.println("\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON已启动 >>>>>>>>>>>>>>>>>>>>>>>>\n");
6269
}
6370

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/DemoVerifier.java

Lines changed: 79 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,23 @@
1414

1515
package apijson.demo.server;
1616

17+
import java.util.HashMap;
18+
import java.util.Map;
19+
1720
import javax.servlet.http.HttpSession;
1821
import javax.validation.constraints.NotNull;
1922

20-
import apijson.demo.server.model.Comment;
21-
import apijson.demo.server.model.Login;
22-
import apijson.demo.server.model.Moment;
23-
import apijson.demo.server.model.Privacy;
24-
import apijson.demo.server.model.User;
25-
import apijson.demo.server.model.Verify;
23+
import com.alibaba.fastjson.JSONArray;
24+
import com.alibaba.fastjson.JSONObject;
25+
26+
import zuo.biao.apijson.JSON;
27+
import zuo.biao.apijson.JSONResponse;
2628
import zuo.biao.apijson.Log;
27-
import zuo.biao.apijson.MethodAccess;
29+
import zuo.biao.apijson.RequestMethod;
30+
import zuo.biao.apijson.RequestRole;
31+
import zuo.biao.apijson.StringUtil;
2832
import zuo.biao.apijson.server.AbstractVerifier;
33+
import zuo.biao.apijson.server.JSONRequest;
2934
import zuo.biao.apijson.server.Visitor;
3035

3136

@@ -36,18 +41,73 @@ public class DemoVerifier extends AbstractVerifier<Long> {
3641
private static final String TAG = "DemoVerifier";
3742

3843

39-
// <TableName, <METHOD, allowRoles>>
40-
// <User, <GET, [OWNER, ADMIN]>>
41-
static { //注册权限
42-
ACCESS_MAP.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class)));
43-
ACCESS_MAP.put(Privacy.class.getSimpleName(), getAccessMap(Privacy.class.getAnnotation(MethodAccess.class)));
44-
ACCESS_MAP.put(Moment.class.getSimpleName(), getAccessMap(Moment.class.getAnnotation(MethodAccess.class)));
45-
ACCESS_MAP.put(Comment.class.getSimpleName(), getAccessMap(Comment.class.getAnnotation(MethodAccess.class)));
46-
ACCESS_MAP.put(Verify.class.getSimpleName(), getAccessMap(Verify.class.getAnnotation(MethodAccess.class)));
47-
ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class)));
48-
}
44+
// 由底部 init 方法读取数据库 Access 表来替代手动输入配置
45+
// // <TableName, <METHOD, allowRoles>>
46+
// // <User, <GET, [OWNER, ADMIN]>>
47+
// static { //注册权限
48+
// ACCESS_MAP.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class)));
49+
// ACCESS_MAP.put(Privacy.class.getSimpleName(), getAccessMap(Privacy.class.getAnnotation(MethodAccess.class)));
50+
// ACCESS_MAP.put(Moment.class.getSimpleName(), getAccessMap(Moment.class.getAnnotation(MethodAccess.class)));
51+
// ACCESS_MAP.put(Comment.class.getSimpleName(), getAccessMap(Comment.class.getAnnotation(MethodAccess.class)));
52+
// ACCESS_MAP.put(Verify.class.getSimpleName(), getAccessMap(Verify.class.getAnnotation(MethodAccess.class)));
53+
// ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class)));
54+
// }
55+
56+
public static void init() {
57+
JSONRequest request = new JSONRequest();
58+
59+
{ //Access[]<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
60+
JSONRequest accessItem = new JSONRequest();
61+
62+
{ //Access<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
63+
JSONRequest access = new JSONRequest();
64+
accessItem.put("Access", access);
65+
} //Access>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
66+
67+
request.putAll(accessItem.toArray(0, 0, "Access"));
68+
} //Access[]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
69+
70+
JSONObject response = new DemoParser(RequestMethod.GET, true).parseResponse(request);
71+
if (JSONResponse.isSuccess(response) == false) {
72+
Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n");
73+
return;
74+
}
4975

76+
JSONArray list = response.getJSONArray("Access[]");
77+
if (list == null || list.isEmpty()) {
78+
Log.w(TAG, "init list == null || list.isEmpty(),没有可用的权限配置");
79+
return;
80+
}
5081

82+
Log.d(TAG, "init < for ACCESS_MAP.size() = " + ACCESS_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<");
83+
84+
JSONObject item;
85+
for (int i = 0; i < list.size(); i++) {
86+
item = list.getJSONObject(i);
87+
if (item == null) {
88+
continue;
89+
}
90+
91+
Map<RequestMethod, RequestRole[]> map = new HashMap<>();
92+
map.put(RequestMethod.GET, JSON.parseObject(item.getString("get"), RequestRole[].class));
93+
map.put(RequestMethod.HEAD, JSON.parseObject(item.getString("head"), RequestRole[].class));
94+
map.put(RequestMethod.GETS, JSON.parseObject(item.getString("gets"), RequestRole[].class));
95+
map.put(RequestMethod.HEADS, JSON.parseObject(item.getString("heads"), RequestRole[].class));
96+
map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), RequestRole[].class));
97+
map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), RequestRole[].class));
98+
map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), RequestRole[].class));
99+
100+
String alias = item.getString("alias");
101+
ACCESS_MAP.put(StringUtil.isEmpty(alias, true) ? item.getString("name") : alias, map);
102+
}
103+
104+
Log.d(TAG, "init for /> ACCESS_MAP.size() = " + ACCESS_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>");
105+
106+
}
107+
108+
109+
110+
51111
@NotNull
52112
@Override
53113
public DemoParser createParser() {
@@ -99,4 +159,6 @@ public static long value(Long v) {
99159
}
100160

101161

162+
163+
102164
}

0 commit comments

Comments
 (0)