下面的类是我们安全实现的关键。它包含了我们项目所需的几乎所有安全配置。
让我们首先在包中创建以下SecurityConfig
类com.example.config
,然后我们将通过代码并了解每个配置的作用
一、注释及声明
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
securedEnabled = true,
jsr250Enabled = true,
prePostEnabled = true
)
1.@EnableWebSecurity
这是用于在项目中启用 Web 安全性的主要 spring 安全性注释。
2.@EnableGlobalMethodSecurity
这用于启用基于注释的方法级安全性。您可以使用以下三种类型的注释来保护您的方法 -
-
secureEnabled:它启用@Secured注释,您可以使用它来保护您的控制器/服务方法。如下所示:
@Secured("ROLE_ADMIN") public User getAllUsers() {} @Secured({"ROLE_USER", "ROLE_ADMIN"}) public User getUser(Long id) {} @Secured("IS_AUTHENTICATED_ANONYMOUSLY") public boolean isUsernameAvailable() {}
-
jsr250Enabled:它启用
@RolesAllowed
可以像这样使用的注释@RolesAllowed("ROLE_ADMIN") public Poll createUser() {}
-
prePostEnabled:@PreAuthorize它使用和@PostAuthorize注释启用更复杂的基于表达式的访问控制语法。
@PreAuthorize("isAnonymous()") public boolean isUsernameAvailable() {} @PreAuthorize("hasRole('USER')") public Poll createUser() {}