1414
1515package apijson .demo .server ;
1616
17+ import java .util .HashMap ;
18+ import java .util .Map ;
19+
1720import javax .servlet .http .HttpSession ;
1821import 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 ;
2628import 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 ;
2832import zuo .biao .apijson .server .AbstractVerifier ;
33+ import zuo .biao .apijson .server .JSONRequest ;
2934import 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