欢迎来到天天文库
浏览记录
ID:15695103
大小:43.00 KB
页数:6页
时间:2018-08-04
《基于spring aop 权限管理系统原型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于springaop权限管理系统原型此权限管理系统把待访问的业务层方法做为权限管理中的资源,通过springaop对接口方法进行拦截,来实现权限的管理,可以实现细粒度的权限控制。在上文体验了springaop一些特性,aop接口:MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice实现这三个接口分别对方法执行前,后,执行中抛异常等情况进行的,我们要是想做overload这样的操作时,要用MethodInterceptor接口,此接口好在有返回值,publicObjectinvoke(
2、 MethodInvocationinvocation) throwsThrowable {//.}上文做法有些牵强业务逻辑还有throwsPermissionDeniedException感觉不爽,现在用MethodInterceptor接口,来写这个demo,把权限与业务分开。advice如下:publicclassPermissionCheckAroundAdviceimplementsMethodInterceptor{ SecurityManagersecurityMgr=newSecurityMa
3、nager(); /**//** *@paramsecurityMgrThesecurityMgrtoset. */ publicvoidsetSecurityMgr(SecurityManagersecurityMgr){ this.securityMgr=securityMgr; } publicObjectinvoke(MethodInvocationinvocation)throwsThrowable{ System.out.println("(被调用方法接
4、口类名:" +invocation.getMethod().getDeclaringClass().getName()+")"); System.out.println("(被调用方法名:"+invocation.getMethod().getName()+")"); StringmethodName=invocation.getMethod().getDeclaringClass() .getName()+"."+invocation.getMet
5、hod().getName(); System.out.println("(被调用方法全名:"+methodName+")"); System.out.println("有否权限:("+securityMgr.checkPermission(methodName)+")"); if(securityMgr.checkPermission(methodName)) returninvocation.proceed(); System.out.println("G
6、oodbye!NOPermission!(by"+this.getClass().getName()+")"); return"--"; }}服务层业务接口修改如下:publicinterfaceService{ publicStringgetBeanInfo();}服务层业务实现类如下:publicclassServiceBeanimplementsService{ ResourceBeanbean; /**//** *@parambeanThebeantoset. */ pub
7、licvoidsetBean(ResourceBeanbean){ this.bean=bean; } publicStringgetBeanInfo(){ Stringresult=""; result+=bean.getMethod1(); result+=bean.getMethod2(); result+=bean.getMethod3(); returnresult; }}资源层,接口,类如下:publicin
8、terfaceResource{}publicinterfaceResourceBeanextendsResource{ publicvoidtheMethod(); publicStringg
此文档下载收益归作者所有