Spring保護方法

2022-08-13 05:36:10 字數 2135 閱讀 9186

由spring security提供,首先需要啟用基於註解的方法安全性:

@enableglobalmethodsecurity(securedenabled = true

)@configuration

public

class methodsecurityconfig extends

globalmethodsecurityconfiguration

}

如果securedenabled設定為true,將會建立乙個切點,這樣spring security切面就會包裝帶有@secured註解的方法。

@secured("role_root") //

使用string陣列作為引數,每個string值是乙個許可權

public

string adduser()

如果方法被沒有認證的使用者或沒有所需許可權的使用者呼叫,保護這個方法的切面將丟擲乙個spring security異常。

該註解與@security註解基本一致,它們的區別在於@rolesallowed註解是jsr-250定義的標準註解。

如果使用該註解需要將@enableglobalmethodsecurity的jsr250enable屬性設定為true。

使用spel能夠在方法呼叫上實現更有意思的安全性約束。如果表示式結果為true,那麼安全規則通過,否則就會失敗。

首先,先要設定prepostenable屬性設定為true。

@enableglobalmethodsecurity(prepostenabled = true

)@configuration

public

class methodsecurityconfig extends

globalmethodsecurityconfiguration

}

@preauthorize和@postauthorize,它們能夠基於表示式的計算結果來限制方法的訪問。

@preauthorize:在方法呼叫之前執行,如果表示式的計算結果不為true,將會阻止方法

的執行。

@postauthorize:直到方法返回才執行,然後決定是否丟擲安全異常。

@preauthorize("(hasrole('role_root') and #content.text.length() <= 180)")

public

string adduser()

@postauthorize("returnobject.root.username = root.username")

public

string adduser()

有時需要保護的不是方法呼叫,而是傳入方法的資料和方法返回的資料。

事後對方法的返回值進行過濾

@postauthorize("returnobject.root.username == root.username")

//使用表示式計算該方法返回集合的每個成員,將計算結果為false的成員移除掉

//filterobject物件引用的是這個方法所返回list中的某乙個元素

@postfilter("hasrole('role_admin') || "

+ "filterobject.admin.username == principal.username")

public

string adduser()

事先對方法的引數進行過濾

@preauthorize("hasrole()")

@prefilter("hasrole('role_admin') || " + "targetobject.user.username == user.name")

public

void deletesth(listuserlist) {}

應該避免編寫複雜的安全表示式,或者在表示式中嵌入太多與安全無關的業務邏輯。而且,表示式

最終只是乙個設定給註解的string值,難以測試和除錯。

軟體保護方法

下面是我總結的一些用於軟體保護的方法 1 程式設計時不要輸入描述性資訊。2 編譯後避免多餘的提示資訊。3 不要使用自己的加密演算法,而應該使用一些成熟的演算法來完成註冊工作。比如ecc dsa。4 隨時驗證註冊資訊的正確性。5 避免使用者輸入完註冊資訊後立即驗證。6 在軟體中新增軟體完整性驗證資訊。...

spring方法注入 Spring方法注入

spring方法注入 spring核心現成可用,有兩個作用域 單例和原型。單例實現單例模式,這意味著在執行時 在jvm中 只有乙個例項。spring在上下文建立期間例項化它們,將它們快取在上下文中,並在需要時 或類似的東西 從快取中提供它們。每次訪問上下文以獲取bean時都會例項化原型。當需要在單例...

不同資料保護的方法

由於不同型別的儲存介質具備不同的特點 長處和價值趨向,他們在某些應用任務或時間分層聯合在儲存模型中,如圖1所示。分級儲存的基本前提類似分級接入和分級資料保護,將應用技術型別和手頭的任務聯合起來,滿足特定的服務和預算要求,考慮到涉及成本 服務質量的有效形式等專門儲存。從本質上講,每種技術在效能 可用性...