这几天老板突发奇想要我在app上搞个权限检验,“哎呀,这个很简单的,你从数据库里把权限找出来,然后放到手机里,用的时候比对一下就可以了”。
这也太完蛋了,直接把权限暴露出去不说,这代码写的一点设计感都没有,真就开发一时爽,维护火葬场。
所以在一上午面向百度编程之后,尝试了一下传说中的aop编程。在后端项目中,利用Interceptor在调用方法执行前进行拦截,根据调用方法上的注解验证当前session用户的权限。
首先是实现检验用户持有权限完整代码不敢放,怕查水表,只能写个伪的
boolean checkPermission(userId,methodPerm){
userPerms = getUserPerms(userId);
boolean hasPerm = false;
for(ele : userPerms){
if(methodPerm.equals(ele)){
hasPerm = true;
}
}
return hasPerm;
}
然后是修饰方法的注解,作用于方法,持续至运行期。
这样是为了在Interceptor中,通过反射动态获取调用方法的权限检验字。主要是我觉得每个条件加个if太蠢了,而且权限和业务逻辑无关,合一起是真造孽