Bahsedilen tekniklerin hiçbiri artık işe yaramayacak. Görünüşe göre Spring, kullanıcıların SecurityExpressionRoot'u geçersiz kılmalarını önlemek için büyük çaba sarf etti.
Güvenlik açıklamalarını kullanmak için 19/11/14 Kurulum Baharını DÜZENLE:
<beans ... xmlns:sec="http://www.springframework.org/schema/security" ... >
...
<sec:global-method-security pre-post-annotations="enabled" />
Bunun gibi bir fasulye yaratın:
@Component("mySecurityService")
public class MySecurityService {
public boolean hasPermission(String key) {
return true;
}
}
Sonra jsp'nizde şuna benzer bir şey yapın:
<sec:authorize access="@mySecurityService.hasPermission('special')">
<input type="button" value="Special Button" />
</sec:authorize>
Veya bir yönteme açıklama ekleyin:
@PreAuthorize("@mySecurityService.hasPermission('special')")
public void doSpecialStuff() { ... }
Ek olarak, Bahar İfade Dilini sizin@PreAuthorize
geçerli kimlik doğrulamaya ve yöntem bağımsız değişkenlerine erişmek açıklamalarınızda .
Örneğin:
@Component("mySecurityService")
public class MySecurityService {
public boolean hasPermission(Authentication authentication, String foo) { ... }
}
Ardından @PreAuthorize
, yeni yöntem imzasıyla eşleşecek şekilde öğenizi güncelleyin :
@PreAuthorize("@mySecurityService.hasPermission(authentication, #foo)")
public void doSpecialStuff(String foo) { ... }