У меня проблема с моим UsersRepository, как показано ниже.
У меня есть репозиторий Users, в котором я пытаюсь отобразить всех пользователей в моей базе данных, только если вошедший в систему пользователь - «Admin».
Однако приведенный ниже код возвращает всех пользователей, когда я расширяю JpaRepository.Когда я расширяю CrudRepository, он работает нормально.
Это известное ограничение или я что-то не так делаю?
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findById(List<Long> userIds);
Optional<User> findByUsername(String username);
Boolean existsByUsername(String username);
}
{
@PreAuthorize("hasRole('test')")
@RequestMapping(value = "/api/users", method = RequestMethod.GET)
public @ResponseBody
List<User> findAll(Sort var1);
}
Добавление весеннего класса конфигурации безопасности для отображения настроек безопасности
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
securedEnabled = true,
jsr250Enabled = true,
prePostEnabled = true
)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtAuthenticationEntryPoint unauthorizedHandler;
@Autowired
CustomUserDetailsService customUserDetailsService;
@Bean
public JwtAuthenticationFilter jwtAuthenticationFilter() {
return new JwtAuthenticationFilter();
}
private String[] permitted = new String[] {
"/static/css/**","/static/media/**","/static/js/**", "/static/manifest.json"
};
@Bean(BeanIds.AUTHENTICATION_MANAGER)
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
// this will create the auth manager that we will use to auth the user
@Override
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder
.userDetailsService(customUserDetailsService)
.passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(unauthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
// .requiresChannel()
// .anyRequest()
// .requiresSecure()
// .and()
.authorizeRequests()
.antMatchers(permitted)
.permitAll()
.antMatchers("/api/auth/**", "/api/", "/")
.permitAll()
.anyRequest()
.permitAll();
//.authenticated();
// Add our custom JWT security filter
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}