Spring Security @EnableGlobalMethodSecurity
用途如下。
@EnableGlobalMethodSecurity
用途相當於Spring MVC傳統xml配置的<global-method-security>
。
@EnableGlobalMethodSecurity
用來啟用基於annotation註解如@Security
,
@PreAuthorize
,@RolesAllowed
的服務層安全機制。
@EnableGlobalMethodSecurity
本身包含了@Configuration
註解,一般都是與Spring Security的配置類放在一起如下。
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableGlobalMethodSecurity(securedEnabled = true)
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
}
@EnableGlobalMethodSecurity
有三個屬性值,
securedEnabled
設定是否啟用@Secured
,
prePostEnabled
設定是否啟用@PreAuthorize
,
jsr250Enabled
設定是否啟用@RolesAllowed
。
通過啟用annotation安全性註解,就能在服務層的介面,類別或方法上加掛@Security
,
@PreAuthorize
,@RolesAllowed
來限制存取權限,例如:
import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import javax.annotation.security.RolesAllowed;
public interface BankService {
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
public Account getAccount(Long id);
@PreAuthorize("hasRole('ROLE_ADMIN')")
public List<Account> findAccounts();
@RolesAllowed({"ROLE_ADMIN"})
public Account add(Account account, double amount);
}
參考:
沒有留言:
張貼留言