java.lang.Ошибка стекового потока при входе в систему

#java #spring-boot #spring-mvc #spring-security

#java #весенняя загрузка #spring-mvc #весна-безопасность

Вопрос:

Я использую spring-boot-starter-security amp; validation-api для своего проекта. Ранее мой проект работал правильно, пользователь мог быть зарегистрирован на странице регистрации, и данные правильно сохранялись в базе данных. Для входа в систему я создал пользовательскую страницу входа, и я смог войти в систему, но я не знаю, какая произошла ошибка. Теперь он показывает ошибку stackoverflow

 UserController.java

@Controller
@RequestMapping("/user")
public class UserController {
    
    @Autowired
     UserRepository userRepository;
    
    
    
    
    @ModelAttribute
    public void addCommonData(Model model,Principal principal) {
    String userName = principal.getName();
        
        User user = userRepository.getUSerByUserName(userName);
        //debug in console
        System.out.println("user "   user);
        
        
        
        model.addAttribute("user",user);
    }
    
    
    
    @RequestMapping("/index")
    public String dashboard(Model model ,Principal principal) {
        
        model.addAttribute("title","User Dashboard");
        return "normal/user_dashboard";
    }
    
    
    
    @GetMapping("/add-contact")
    public String openAddContactForm(Model model) {
        
        model.addAttribute("title", "Add Contact");
        
        model.addAttribute("contact",new Contact());
        
        return "normal/add_contact_form";
    }
    
    

}
  
 Myconfig.java

@Configuration
@EnableWebSecurity
public class MyConfig extends WebSecurityConfigurerAdapter{
  
  @Bean
  public UserDetailsService getUserDetailsService() {
      return new UserDetailsServiceImp();
  }
  
  @Bean
  public  BCryptPasswordEncoder passwordEncoder() {
      return new BCryptPasswordEncoder();
  }
  
  
  @Bean
  public DaoAuthenticationProvider authenticationProvider() {
  DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
  
  daoAuthenticationProvider.setUserDetailsService(this.getUserDetailsService());
  daoAuthenticationProvider.setPasswordEncoder(passwordEncoder());
  
  return daoAuthenticationProvider;
  }
  
  //Configure method
  

  @Override
  protected void configure(AuthenticationManagerBuilder auth) throws Exception {
      auth.authenticationProvider(authenticationProvider());
  }

  @Override
  protected void configure(HttpSecurity http) throws Exception {
      http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
      .antMatchers("/user/**").hasRole("USER")
      .antMatchers("/**").permitAll()
      .and().formLogin()
      .loginPage("/signin")
      .loginProcessingUrl("/dologin")
      .defaultSuccessUrl("/user/index")
      .and().csrf().disable();
  }
  
  
  
  
  

}
  

Я не понял, где произошла ошибка. Пожалуйста, помогите, и я также могу предоставить код реализации интерфейса UserDetails amp; UserDetailsService.
я использую следующие зависимости
1.spring-boot-starter-data-jpa
2.spring-boot-starter-thymeleaf
3.spring-boot-starter-web
4.spring-boot-starter-security 5.spring-boot-devtools
6.проверка-api
7. спящий режим-валидатор
8.mysql-connector-java

для части авторизации я предоставил код в Myconfig.java .. пожалуйста, помогите, я не могу понять, в чем ошибка

 error
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Nov 15 21:48:55 NPT 2020
There was an unexpected error (type=Internal Server Error, status=500).
No message available
java.lang.StackOverflowError

  

URL-адрес и действие форм все правильные..

 HomeController.java   for remaining pages and request

@Controller
public class HomeController {
    
    @Autowired
    private BCryptPasswordEncoder passwordEncoder;
    
    @Autowired
    UserRepository  userRepo;
    
    @RequestMapping("/")
    public String home(Model model) {
        model.addAttribute("title","Home-Smart Contact Manager");
        return "home";
    }
    
    
    @RequestMapping("/about")
    public String about(Model model) {
        model.addAttribute("title","About-Smart Contact Manager");
        return "about";
    }
    

    @RequestMapping("/signup")
    public String signup(Model model) {
        model.addAttribute("title","Register-Smart Contact Manager");
        model.addAttribute("user",new User());
        return "signup";
    }
    
    
    //hander for registering user
    @RequestMapping(value="/do_register",method=RequestMethod.POST)
    public String registerUser(@Valid @ModelAttribute("user")User user,BindingResult result ,
            @RequestParam(value="agreement",defaultValue="false") boolean agreement, 
            Model model, HttpSession session)
    {
        try {
            
            //check gryoki nai vnyrw validation nai ho
            if(!agreement)
            {
                System.out.println("you haven't agreed the terms and conditions");
                throw new Exception("You haven't agreed the terms and conditions");
            }
            
            
            //if invalid data pathako xa vnya error aauxa
            if(result.hasErrors()) {
                
                model.addAttribute("user",user); //we have send user obj to the view 
                return "signup";
            }
            
                
            //yadi error xa vana back to the form with user input data sajilo
            
            user.setRole("ROLE_USER");
            user.setEnabled(true);
            user.setImageUrl("default.png");
            user.setPassword(passwordEncoder.encode(user.getPassword()));
            
            System.out.println("agreement "  agreement);
            System.out.println("User "  user);
            
            
            
            User result1 = this.userRepo.save(user);
            model.addAttribute("user",new User());
            session.setAttribute("message", new Message("Successfully Registered!!","alert-success"));
            return "signup";
            
        }
        catch(Exception e)
        {
            e.printStackTrace();
            model.addAttribute("user",user);
            session.setAttribute("message", new Message("Something Went Wrong !! "   e.getMessage(),"alert-danger"));
            return "signup";
        }
        
    }

    
    
    
    //handler for custom login
    @GetMapping("/signin")
    public String customLogin(Model model) {
        
        model.addAttribute("title","Login Page - Smart Contact Manager");
        return "login";
    }
    

}
  

Комментарии:

1. Добавьте еще немного информации о проекте, если вы используете thymeleaf или velocity, есть ли какие-либо другие настройки или фильтры.

2. Зависимости 1.spring-boot-starter-data-jpa 2.spring-boot-starter-thymeleaf 3.spring-boot-starter-web 4.spring-boot-starter-security 5.spring-boot-devtools 6.validation-api 7.hibernate-validato 8.mysql-соединитель-java .