使用spring的aop進行許可權攔截

2021-07-04 08:06:46 字數 765 閱讀 7862

乙個ssi的專案(springmvc+mybatis),需要加上許可權驗證(非資料許可權),考慮使用aop來實現。

大致思路是使用自定義註解,在需要許可權控制的方法前(controller層)使用註解定義方法所需的許可權,然後使用aop攔截訪問的方法,在執行目標物件前通過反射取得目標物件所需的許可權,然後從當前session中取得登陸使用者,遍歷使用者所擁有的許可權,如果有許可權則繼續執行目標物件,如果沒有許可權則跳轉到錯誤提示頁面。

1、如下定義annotation:

@target(elementtype.method)

@retention(retentionpolicy.runtime)

public @inte***ce permission

2、定義切面類驗證許可權:

//宣告該類為乙個切面

@aspect 

@component

public class myinterceptor //宣告乙個切入點,切入點的名稱其實是乙個方法

//環繞通知(特別適合做許可權系統)

@around("anymethod()")

public object dobasicprofiling(proceedingjoinpoint jp) throws throwable 

} else }}

注:通過反射,可以獲得切入點方法上是否有許可權註解,對於有許可權註解的方法,需要進行許可權驗證。

3、配置aop,攔截controller中所有的方法。(

參考:

spring的aop的使用

使用 aspect標籤標註的類就是乙個切面類 aspect comment public class calculatorloggingaspect before標識這個方法是個前置通知,切點表示式表示執行arithmeticacalculator藉口的add 方法。execution com.sp...

關於spring的AOP使用

目前專案中用的比較多的是 aspectj註解的切面和xml配置的aop 表述 最近這個專案用的是xml配置的aop 配置乙個跟節點,下面配置乙個advisor或者aspect,裡面再配置乙個pointcut的正則表示執行的地點和advice什麼時候執行什麼事。概念陳述 1.通知 advice 定義了...

Spring的AOP簡單使用

強烈推薦乙個大神的人工智慧的教程 相關概念 1.連線點 joinpoint 類裡面哪些方法可以被增強,這些方法稱為連線點 2.切入點 在類裡可以有很多的方法被增強,實際增強的方法稱為切入點 3.通知 增強 增強的邏輯,稱為增強 4.切面 aspect 增強具體方法的過程稱為切面 把增強用到切入點的過...