Sa-Token
Sa-Token copied to clipboard
路由拦截鉴权能否支持动态配置
对以下问题有疑问:
路由拦截鉴权,能否做成配置式的,就是不需要硬编码一个一个添加SaRouter.match
SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
而是做成key,value式的文件配置,例如
"/user/**": "user"
"/admin/**": "admin"
这样配置简单很多,还可以进一步支持动态修改配置,比如通过配置中心同步配置,用在网关时也容易维护。
lambda 方式是为了更加灵活,因为一个path可能不光要校验权限,还要校验角色、或者其它的验证方式, 如果追求简洁,可以手动封装一下鉴权的代码,例如:
Map<String, String> authMap = new LinkedHashMap<>();
authMap.put("/user/**", "user");
authMap.put("/admin/**", "admin");
authMap.put("/article/**", "article");
// ...
for (String path : authMap.keySet()) {
SaRouter.match(path, () -> StpUtil.checkPermission(authMap.get(path)));
}