1.工具說明
技術(shù):注解+(設(shè)計(jì)模式)(單例-內(nèi)部類懶加載,責(zé)任鏈,工廠模式)+自動(dòng)掃包
優(yōu)點(diǎn):1.非侵入式插件(可以很容易添加到你的SpringBoot項(xiàng)目)
2.易學(xué)習(xí)
3.可以針對不同機(jī)構(gòu) 不同角色 不同請求進(jìn)行 過濾授權(quán)
4.增加緩存機(jī)制可以提供過濾效率
5.支持自定義規(guī)則
2.使用方法
1.在SpringBoot啟動(dòng)器添加掃描注解并配置待掃描的自定義過濾器包
@SpringBootApplication
@ScanRoleConfig("top.hihuzi.test")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
FilterManager.scanRoleRule(Application.class);
/** 下面這句用于測試 **/
//System.out.println(FilterManager.excute(new RuleSimple(new Object[]{"/first"}, null)));
}
}
2.自定義一個(gè)或者多個(gè)過濾器(可以為每個(gè)公司每個(gè)角色進(jìn)行配置一個(gè)過濾器)具體代碼如下:
package top.hihuzi.filter;
import top.hihuzi.annotation.RoleRules;
import top.hihuzi.bean.Rule;
import top.hihuzi.croe.Filter;
import java.util.Arrays;
/**
* tips
*
* @author: hihuzi 2018/11/4 10:22
*/
@RoleRules
public class FirstFilter implements Filter {
@Override
public Rule execute(Rule rule) {
if ((String.valueOf(rule.getKey()[0])).equals("/first")) {
// cache: 是一個(gè)緩存 用戶自己去校驗(yàn) cache是一個(gè)Map 可以定義唯一的 Key value可以定義為 boolean(true,false)
rule.cache().put("/first", rule.getValue() == null ? null : Arrays.asList(rule.getValue()));
System.out.println("我是第一個(gè)!!!!");
}
return rule;
}
}
3.具體到自己需要進(jìn)行篩選權(quán)限的接口地方如下調(diào)用
// 先傳一些值 用于過濾器 校驗(yàn)規(guī)則
FilterManager.excute(new RuleSimple(new Object[]{"/first"}, null));
Object permission = excute2.isPermission(new Object[]{"/second", "你好師姐!"});
3.readme
也是第二次在這里發(fā)點(diǎn)東西,希望有夢想盆友多多指點(diǎn)
---hihuzi 2018-11-6 晚