webwork的攔截器真是好用

raorq發表於2020-04-06
          這幾天設計一個專案,雖然基本上是採用老專案的許可權管理,但發現老專案的許可權管理,把一些細微的許可權寫死在方法裡面,而且每增加一個許可權,都有進行配置,寫靜態屬性,很煩。所以今天想了下,決定採用webwork自帶的攔截器來實現細微的許可權設計。在這裡我就不細說攔截器的使用了。貼程式碼出來
java 程式碼
 
  1. public class PermissionInterceptor implements Interceptor {  
  2.     private static Logger logger = Logger.getLogger(PermissionInterceptor.class);  
  3.       
  4.     /** 
  5.      * 需求攔截並進行判斷的許可權引數 
  6.      */  
  7.     private String prem;  
  8.       
  9.   
  10.     public final void setPrem(String prem) {  
  11.         this.prem = prem;  
  12.     }  
  13.   
  14.     public PermissionInterceptor() {  
  15.         super();  
  16.     }  
  17.   
  18.     public void destroy() {  
  19.     }  
  20.   
  21.     public void init() {  
  22.     }  
  23.   
  24.     /** 
  25.      * 攔截使用者操作 
  26.      */  
  27.     public String intercept(ActionInvocation invocate) throws Exception {  
  28.         logger.debug(prem);  
  29.         if(PermissionUtil.hasPermission(prem)){  
  30.             logger.debug("No Prem");  
  31.             return invocate.invoke();     
  32.         }else{  
  33.             logger.debug("Yes Prem");  
  34.             return Constant.NOT_AUTHORIZE;  
  35.         }  
  36.           
  37.     }  
  38.   
  39. }  

在配置檔案裡只需要這樣做就ok了

        
xml 程式碼
 
  1. <action name="list"  
  2.     class="com.teesoo.teanet.action.member.MemberAction" method="list">  
  3.     <result name="success" type="freemarker">  
  4.         /WEB-INF/template/member/member_list.ftl  
  5.     </result>  
  6.       
  7.     <interceptor-ref name="myDefaultStack">  
  8.        
  9.     </interceptor-ref>  
  10.       
  11.     <interceptor-ref name="permissionInterceptor">  
  12.         <param name="prem">  
  13.             df  
  14.         </param>  
  15.     </interceptor-ref>  
  16.   
  17. </action>  
<action name="list"><interceptor-ref name="permissionInterceptor">
               
            </interceptor-ref>

        </action>
上面的df就是你自己定義的許可權操作引數。這樣就避免了軟編碼。直接硬編碼就ok了。方便明瞭。
我這才發現webwork的攔截器是多麼的貼心

相關文章