使用struts1+注解做权限管理

1.  写一个接受用户请求的action,继承DispatchAction,然后这个action里面处理各种业务需求,比如说add,delete等等,在各个方法上添加注解,然后在调用这个action的方法时检查有没有注解。

2.  关键是要弄明白是谁调的action?查看有没有注解的代码怎么写?写在哪?

3.  首先要弄明白struts1的流程,用户请求提交给ActionServlet之后,ActionServlet调用requestProcessor这个请求处理器,请求处理器根据你请求的地址,实例化Action对象,然后拿Action各个方法的数据,最后调Action的方法。

4.  现在就断点调试来看看是请求处理器的哪个方法调了action,哪个调了就重写哪个,断点段在ActionServlet的dopost方法上,发现是processActionPerform调用的action,那就准备重写吧!

5.  写一个自己的请求处理器MyRequestProcessor,继承RequestProcessor,然后override他的processActionPerform方法。当然要记得在xml文件中配置controller标签,指定用自己的请求处理器。

6.  在MyRequestProcessor中,首先要判断调用的是action的哪个方法,怎么得到这个方法呢?用反射!

一般action有三种方式:第一,直接继承Action的action,那么方法名就是“execute”;第二,继承DispatchAction的action,那么方法名就是request域中对应的mapping中的parameter;第三,继承MappingDispatchAction的action,那么方法名就是mapping中的parameter,通过反射得到调用action的哪个方法。

7.      然后判断调用的方法上面有没有注解,也就是调用这个方法需不需要权限,不需要,调用超类的processActionPerform;需要的话,检查用户的权限是否contains这个权限,是就放行,不是不放行!

代码就不写了,有了思想就有了代码!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e380a8f575c5679256e8e0415fd0c3bc.html