故宮我已經安裝的Spring Security如下:使用Spring Security和@Secured
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MongoUserDetailsService userServiceDetails;
@Autowired
private BCryptPasswordEncoder bCryptEncoder;
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/js/**", "/css/**", "/fonts/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.csrf().disable()
.formLogin()
.defaultSuccessUrl("/index", true)
.loginPage("/login")
.permitAll()
.and()
.httpBasic()
.and()
.logout()
.permitAll()
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true);
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userServiceDetails)
.passwordEncoder(bCryptEncoder);
}
而且我控制器上我有以下幾點:
@RequestMapping(method = RequestMethod.GET)
@Secured({"ADMIN"})
public List<Item> getItems(@RequestBody filter filter) {
if (filter.hasMissingField()) {
return new ArrayList<>();
}
return service.getItems(filter);
}
在用戶詳細信息的記錄對象具有角色需要(在調試):
但是,我一得到403 - 禁止。我看不出爲什麼。如果我刪除了@Secured,那麼我可以訪問該頁面,但使用@Secured({「ADMIN」})會失敗。
我已經梳理過SO,並且發現與@Secured not working at all有關的錯誤,與@Secured having no effects at the Controller level有關的錯誤,但不像我目前的情況,它無法授權所需的角色出現。
如果它有幫助我使用Spring Boot 1.3.2。
任何幫助將不勝感激。由於
你需要說'@Secured({ 「ROLE_ADMIN」})'呢? – gerrytan
謝謝@gerrytan工作。我不知道必須爲角色添加前綴。謝謝你救了我一堆;) – user1609848