gpt4 book ai didi

java - 以编程方式启用 Spring Security pre-post-annotations

转载 作者:IT老高 更新时间:2023-10-28 13:47:54 24 4
gpt4 key购买 nike

我有 Spring WebMVC 应用程序,在 Controller 方法上使用 @PreAuthorize@PostAuthorice 注释。但是这些注释被忽略了,因为我没有在我的 Spring Security 中启用它。

如果我有一个 spring-security.xml 我可以使用以下行启用它:

<global-method-security pre-post-annotations="enabled" />

不幸的是,我有一个完整的基于注释的配置。Spring-Security 原则上适用于我的应用程序。

我的问题:如何使用基于注释的 MVC 配置启用 pre-post-annotation?

  • Spring 版本:4.0.5.RELEASE
  • Spring-Security-版本:3.2.4.RELEASE

这是我的 WebSecurityConfigurerAdapter 实现:

@Configuration
@EnableWebMvcSecurity()
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.passwordEncoder(new ShaPasswordEncoder(256))
.usersByUsernameQuery("select username,password, enabled from user where USERNAME=?")
.authoritiesByUsernameQuery("select u.username, r.name from user u, role r, user_has_role uhr where u.id = uhr.user_id and r.id = uhr.role_id and u.username = ? ");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.defaultSuccessUrl("/", true)
.and()
.logout()
//.logoutUrl("/logout") //this is the default
// Call the URL invalidate_session after logout...
.logoutSuccessUrl("/invalidate_session")
.permitAll()
.and()
// @see http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#csrf-configure
.csrf().disable();
}
}

我的 MessageSecurityWebApplicationInitializer 为空:

public class MessageSecurityWebApplicationInitializer extends
AbstractSecurityWebApplicationInitializer {

}

最佳答案

我必须在配置类中添加以下注释:@EnableGlobalMethodSecurity(prePostEnabled=true)

关于java - 以编程方式启用 Spring Security pre-post-annotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com