Привет, я пытаюсь реализовать безопасность весенней загрузки, но у меня есть некоторые проблемы. После входа в систему появляется Запрещенная ошибка для всех URL-адресов в моем приложении. Я создаю класс, реализующий интерфейс UserDetails:
public class CustomUserDetail implements UserDetails {
private static final long serialVersionUID = 1L;
private User user;
Set<GrantedAuthority> authorities=null;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
public void setAuthorities(Set<GrantedAuthority> authorities)
{
this.authorities=authorities;
}
public String getPassword() {
return user.getPassword();
}
public String getUsername() {
return user.getUsername();
}
public boolean isAccountNonExpired() {
return true;
}
public boolean isAccountNonLocked() {
return true;
}
public boolean isCredentialsNonExpired() {
return true;
}
public boolean isEnabled() {
return true;
}
}
Это мой класс конфигурации безопасности.
@EnableWebSecurity
public class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("loginServiceImpl")
UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// set you configuration on th auth object
auth.userDetailsService(userDetailsService);
}
@Bean
public PasswordEncoder getPasswordEncoder() {
// set configuration for password encoder
return NoOpPasswordEncoder.getInstance();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// set authorization configuration
http.authorizeRequests()
.antMatchers("/", "/home").hasAnyRole("ROLE_ADMIN", "ROLE_USER")
.antMatchers("/login**", "/resources/**", "/js/**", "/css/**").permitAll()
.and()
.formLogin();
}
}
и моя служба
@Service
public class LoginServiceImpl implements UserDetailsService {
@Autowired
private UserDao userDao;
public CustomUserDetail loadUserByUsername(String name) throws UsernameNotFoundException,
DataAccessException {
User domainUser = userDao.findByUserName(name);
if (domainUser == null)
throw new UsernameNotFoundException("User not found.");
Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
CustomUserDetail customUserDetail = new CustomUserDetail();
customUserDetail.setUser(domainUser);
customUserDetail.setAuthorities(authorities);
return customUserDetail;
}
}
Я удаляю несколько дополнительных URL-адресов и роли для теста, и появляется запрещенная ошибка для "ROLE_ADMIN" и "/home"("/").