这几天设计一个项目,虽然基本上是采用老项目的权限管理,但发现老项目的权限管理,把一些细微的权限写死在方法里面,而且每增加一个权限,都有进行配置,写静态属性,很烦。所以今天想了下,决定采用webwork自带的拦截器来实现细微的权限设计。在这里我就不细说拦截器的使用了。贴代码出来
java 代码
- public class PermissionInterceptor implements Interceptor {
- private static Logger logger = Logger.getLogger(PermissionInterceptor.class);
-
-
-
-
- private String prem;
-
-
- public final void setPrem(String prem) {
- this.prem = prem;
- }
-
- public PermissionInterceptor() {
- super();
- }
-
- public void destroy() {
- }
-
- public void init() {
- }
-
-
-
-
- public String intercept(ActionInvocation invocate) throws Exception {
- logger.debug(prem);
- if(PermissionUtil.hasPermission(prem)){
- logger.debug("No Prem");
- return invocate.invoke();
- }else{
- logger.debug("Yes Prem");
- return Constant.NOT_AUTHORIZE;
- }
-
- }
-
- }
在配置文件里只需要这样做就ok了
xml 代码
- <action name="list"
- class="com.teesoo.teanet.action.member.MemberAction" method="list">
- <result name="success" type="freemarker">
- /WEB-INF/template/member/member_list.ftl
- </result>
-
- <interceptor-ref name="myDefaultStack">
-
- </interceptor-ref>
-
- <interceptor-ref name="permissionInterceptor">
- <param name="prem">
- df
- </param>
- </interceptor-ref>
-
- </action>
<action name="list"><interceptor-ref name="permissionInterceptor">
</interceptor-ref>
</action>
上面的df就是你自己定义的权限操作参数。这样就避免了软编码。直接硬编码就ok了。方便明了。
我这才发现webwork的拦截器是多么的贴心