在Spring Boot中创建自定义@PreAuthorize MethodSecurity,可以按照以下步骤进行:
下面是一个示例代码:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin().permitAll()
.and()
.logout().permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password("{noop}admin").roles("ADMIN")
.and()
.withUser("user").password("{noop}user").roles("USER");
}
@PreAuthorize("hasRole('ADMIN')")
public void adminOnlyMethod() {
// 只有ADMIN角色可以访问的方法
}
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
public void userMethod() {
// ADMIN和USER角色都可以访问的方法
}
}
在上述示例中,我们定义了两个方法adminOnlyMethod和userMethod,并使用@PreAuthorize注解来指定安全验证规则。adminOnlyMethod方法只有ADMIN角色可以访问,而userMethod方法则可以被ADMIN和USER角色访问。
注意:示例中的用户认证部分使用了内存认证,实际项目中应该使用数据库或其他认证方式。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云