Здравствуйте , не могу понять в чем проблема, создал приложение которое регистрирует пользователя, в этой части все правильно, пользователь действительно заносится в бд и в таблице ролей появляется его роль, когда же дело доходит до аутентификации , то ничего не происходит причем даже в консоле приложения ничего не пишет( как в случае с регистрацией я хотябы вижу что приложение сделало запрос к бд и положило туда пользователя) , в случае с аутентификацией ничего , ни ошибки ни результата, помогите пожалуйста , вот ссылочка на гит :
https://github.com/DennisKingsman/NetCracker
если удобно могу весь код перенести сюда, заранее спасибо
желаемое поведение : после того как на странице регистрации я пользователя в бд добавил , на странице логина я должен залогиниться чтобы потом при попытке перейти на страницу personalAccount меня больше не перебрасывало на логин
код :
вот тут веб защиты контроллер , который вроде как находит юзера по его имени и потом находит его роль и аутентифицирует его , вероятно эта штука не работает потому как в консоле приложения я никакого запроса не увидел, в то время как когда я кладу пользователя в бд я этот запрос вижу
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home","/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.passwordEncoder(NoOpPasswordEncoder.getInstance())
.usersByUsernameQuery("select username, password, active from usr where username = ? ")
.authoritiesByUsernameQuery("select u.username, ur.roles from usr u inner join user_role ur on u.id = ur.user_id where u.username = ? "); //take name and role of user
}
}
вот это контроллер MVC который просто мапит страницу с запросом тут вроде все норм
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
}
а вот тут метод из главного контроллера, который после авторизации вот этот секьюр контекст (принципал) вот он его имя выводит и мы понимаем что мы вот залогинились и инфа о нас она как бы есть
@RequestMapping(value = "/personalAccount", method = RequestMethod.GET)
public String personalAccount(Model model, Principal principal){
String userInfo = principal.getName();
model.addAttribute("userInfo", userInfo);
return "personalAccount";
}