我正在使用Spring Data REST,我的存储库中有一个find方法:
public ListfindByLastNameOrderByLastNameAsc(@Param("lastName") String lastName);
我试图为方法添加安全性,但没有运气.在我的数据库中,我有一个用户角色为'ROLE_USER'.当服务启动时,登录表单出现,我可以使用数据库中的凭据登录.
这是我的网络安全配置:
@Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication() .dataSource(dataSource) .usersByUsernameQuery("select username,identification,enabled from users where username = ?"); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/contacts/findByLastNameOrderByLastNameAsc").hasRole("ADMIN") .antMatchers("/contacts/**").fullyAuthenticated() .antMatchers("/contacts/**").hasRole("USER") .anyRequest().authenticated() .and() .formLogin(); }
当我尝试在我的存储库中调用服务时,我没有看到任何身份验证错误.使用我的浏览器,即使数据库中的用户没有"ADMIN"角色,URL也会正常显示.
我尝试将'RolesAllowed'添加到我的存储库中的方法,但没有运气:
@RolesAllowed(value = { "ADMIN" }) public ListfindByLastNameOrderByLastNameAsc(@Param("lastName") String lastName);
我是否要正确地为Spring Data提供的REST API添加安全性?如何让这个工作的想法?
谢谢