由spring security提供,首先需要啟用基於註解的方法安全性:
@enableglobalmethodsecurity(securedenabled = true如果securedenabled設定為true,將會建立乙個切點,這樣spring security切面就會包裝帶有@secured註解的方法。)@configuration
public
class methodsecurityconfig extends
globalmethodsecurityconfiguration
}
@secured("role_root") //如果方法被沒有認證的使用者或沒有所需許可權的使用者呼叫,保護這個方法的切面將丟擲乙個spring security異常。使用string陣列作為引數,每個string值是乙個許可權
public
string adduser()
該註解與@security註解基本一致,它們的區別在於@rolesallowed註解是jsr-250定義的標準註解。
如果使用該註解需要將@enableglobalmethodsecurity的jsr250enable屬性設定為true。
使用spel能夠在方法呼叫上實現更有意思的安全性約束。如果表示式結果為true,那麼安全規則通過,否則就會失敗。
首先,先要設定prepostenable屬性設定為true。
@enableglobalmethodsecurity(prepostenabled = true@preauthorize和@postauthorize,它們能夠基於表示式的計算結果來限制方法的訪問。)@configuration
public
class methodsecurityconfig extends
globalmethodsecurityconfiguration
}
@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所示。分級儲存的基本前提類似分級接入和分級資料保護,將應用技術型別和手頭的任務聯合起來,滿足特定的服務和預算要求,考慮到涉及成本 服務質量的有效形式等專門儲存。從本質上講,每種技術在效能 可用性...