Когда вы переопределяете метод configure(AuthenticationManagerBuilder auth)
с помощью auth.inMemoryAuthentication().withUser
, вы по сути создаете нового пользователя (типа org.springframework.security.core.userdetails.User
).
Всякий раз, когда необходимо создать и добавить новый объект пользователя.Весенняя экосистема безопасности, она нуждается в 3 необнуляемых аргументах.Они
String username
String password
Collection<? extends GrantedAuthority> authorities
Поэтому, когда вы предоставляете имя пользователя и пароль, используя withUser(String username)
и password(String password)
, вы также должны предоставить полномочия пользователю, используя либо roles(String... roles)
, authorities(GrantedAuthority... authorities)
, authorities(List<? extends GrantedAuthority> authorities)
или authorities(String... authorities)
.Для вас проще всего использовать метод roles(String... roles)
и указать нужную вам роль, например role("USER")
, или, если вы не хотите предоставлять какую-либо роль, просто используйте role("")
, и при этом будет передана пустая коллекция.к атрибуту Collection<? extends GrantedAuthority> authorities
объекта User.По сути, вам нужно изменить метод configure
, как показано ниже:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("abhi").password("test").roles("") //or .roles("USER")
.and()
.withUser("kumar").password("test2").roles(""); //or .roles("USER")
}
Ниже приводится документация org.springframework.security.core.userdetails.User
@, генерирует исключение IllegalArgumentException, если null
значение было передано либо как параметр, либо как элемент в GrantedAuthority
коллекции