Соответствующий код
SearchController.java
Код: Выделить всё
package com.example.medicinska_oprema.controller;
import com.example.medicinska_oprema.model.Company;
import com.example.medicinska_oprema.model.Equipment;
import com.example.medicinska_oprema.service.CompanyService;
import com.example.medicinska_oprema.service.EquipmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.ui.Model;
import java.util.List;
@Controller
public class SearchController {
@Autowired
private CompanyService companyService;
@Autowired
private EquipmentService equipmentService;
@GetMapping("/search")
public String search(@RequestParam("q") String query, Model model) {
List companies = companyService.searchCompanies(query);
List equipments = equipmentService.searchEquipment(query);
model.addAttribute("companies", companies);
model.addAttribute("equipments", equipments);
return "searchResults";
}
}
Код: Выделить всё
package com.example.medicinska_oprema.service;
import com.example.medicinska_oprema.model.Company;
import com.example.medicinska_oprema.repository.CompanyRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CompanyService {
@Autowired
private CompanyRepository companyRepository;
public List searchCompanies(String keyword) {
return companyRepository.findByNameContainingIgnoreCase(keyword);
}
}
Код: Выделить всё
package com.example.medicinska_oprema.service;
import com.example.medicinska_oprema.model.Equipment;
import com.example.medicinska_oprema.repository.EquipmentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EquipmentService {
@Autowired
private EquipmentRepository equipmentRepository;
public List searchEquipment(String keyword) {
return equipmentRepository.findByNameContainingIgnoreCase(keyword);
}
}
Код: Выделить всё
package com.example.medicinska_oprema.repository;
import com.example.medicinska_oprema.model.Company;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface CompanyRepository extends JpaRepository {
List findByNameContainingIgnoreCase(String keyword);
}
Код: Выделить всё
package com.example.medicinska_oprema.repository;
import com.example.medicinska_oprema.model.Equipment;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface EquipmentRepository extends JpaRepository {
List findByNameContainingIgnoreCase(String keyword);
}
Код: Выделить всё
package com.example.medicinska_oprema.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((requests) -> requests
.requestMatchers("/", "/home", "/search").permitAll()
.anyRequest().authenticated()
)
.formLogin((form) -> form
.loginPage("/login")
.permitAll()
)
.logout((logout) -> logout.permitAll());
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
UserDetails user =
User.withDefaultPasswordEncoder()
.username("user")
.password("password")
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
}
Я проверил конфигурацию безопасности и убедился, что конечная точка /search разрешена для всех пользователей, в том числе неаутентифицированных. Что может быть причиной этого цикла перенаправления и как его устранить?
Подробнее здесь: https://stackoverflow.com/questions/788 ... ry-request
Мобильная версия