Я использую Spring Boot с Spring Security.Добавить роль в метод
Чтобы создать нового пользователя, «создающий» пользователь должен быть администратором.
Но если «создать» пользователь имеет только стандартную роль ...
@PreAuthorize("hasRole('admin')")
@RequestMapping(value = "/users", method = RequestMethod.POST)
public Long createUser(@RequestBody @Valid final UserAppDto user) {
return userService.save(user);
}
... результат в том, что без прав администратора, пользователь может создать новый пользователь.
В моем UserApp
классе, для роли, у меня есть:
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private Set<Role> roles = new HashSet<>();
Моей главной заявка
@EntityScan(basePackageClasses = {Application.class, Jsr310JpaConverters.class})
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class Application implements SchedulingConfigurer{
@Bean
public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter() {
return new ApplicationSecurity();
}
}
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
}
нормально по безопасности HTTP, вы имеете в виду что-то вроде http.authorizeRequests(). AntMatchers ("/ **"). hasRole ("ПОЛЬЗОВАТЕЛЬ")? это то же самое с @Secured и @RolesAllowed? –
@robertgagnon: Да по http security, я имею в виду 'http.authorizeRequests() ...'. Это используется механизмом фильтра пружинных фильтров до того, как запрос попадет на передний контроллер DispatcherServlet и не зависит от АОП в отличие от аннотаций @ @ Secured или pre-post. –
ok попробует это –