пакет
com.odopapi.odop_shi.security; импортировать java.util.Arrays; импортировать java.util.Collections; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.Configuration; импортировать org.springframework.security.config.annotation.web.builders.HttpSecurity; импортировать org.springframework.security.config.http.SessionCreationPolicy; импортировать org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; импортировать org.springframework.security.crypto.password.PasswordEncoder; импортировать org.springframework.security.web.SecurityFilterChain; импортировать org.springframework.security.web.authentication.www.BasicAuthenticationFilter; импортировать org.springframework.security.web.util.matcher.AntPathRequestMatcher; импортировать org.springframework.web.cors.CorsConfiguration; импортировать org.springframework.web.cors.CorsConfigurationSource; импортировать jakarta.servlet.http.HttpServletRequest; @Конфигурация общественный класс SecurityConfig { @Бин public SecurityFilterChain SecurityFilterChain (HttpSecurity http) выдает исключение { http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeHttpRequests(Authorize->Authorize.requestMatchers(new AntPathRequestMatcher("/admin/**")).authenticated() .anyRequest().permitAll()) .cors().configurationSource(новый CorsConfigurationSource() { @Override public CorsConfiguration getCorsConfiguration (запрос HttpServletRequest) { CorsConfiguration cfg = новый CorsConfiguration (); cfg.setAllowedOrigins(Arrays.asList( "http://локальный хост:3000" )); cfg.setAllowedMethods(Collections.singletonList("*")); cfg.setAllowCredentials(истина); cfg.setAllowedHeaders(Collections.singletonList("*")); cfg.setExposeHeaders(Arrays.asList("Авторизация")); cfg.setMaxAge(3600L); вернуть файл конфигурации; } }) .and().httpBasic().and();//.formLogin(); вернуть http.build(); } @Бин общественный PasswordEncoder парольEncoder () { вернуть новый BCryptPasswordEncoder(); } } //Субъект-производитель пакет com.odopapi.odop_shi.model; импортировать jakarta.persistence.Entity; импортировать java.util.List; импортировать jakarta.persistence.CascadeType; импортировать jakarta.persistence.Column; импортировать jakarta.persistence.Entity; импортировать jakarta.persistence.FetchType; импортировать jakarta.persistence.GeneratedValue; импортировать jakarta.persistence.GenerationType; импортировать jakarta.persistence.Id; импортировать jakarta.persistence.JoinColumn; импортировать jakarta.persistence.ManyToOne; импортировать jakarta.persistence.OneToMany; импортировать jakarta.persistence.Table; @Сущность @Table(name = "продюсеры") Продюсер общественного класса { @Идентификатор @GeneratedValue(стратегия = GenerationType.IDENTITY) частный длинный идентификатор производителя; @Column(name = "имя_продюсера") частная строка имя производителя; @Column(name = "адрес_производителя") частная строка ProducerAddress; @Column(name = "producer_contact_number") частный строковый производительContactNumber; @Column(name = "producer_email_address") частный строковый производительEmailAddress; частная строка uniqueUserName; личный строковый пароль; @OneToMany(mappedBy = "производитель", cascade = CascadeType.ALL) частные продукты List; публичный продюсер() { } общедоступный производитель (длинный идентификатор производителя, строка имя производителя, строка ProducerAddress, строка ProducerContactNumber, строка ProducerEmailAddress, строка uniqueUserName, строка пароля, список продукты) { this.producerId = идентификатор производителя; this.producerName = имя производителя; this.producerAddress = ProducerAddress; this.producerContactNumber =productContactNumber; this.producerEmailAddress = ProducerEmailAddress; this.uniqueUserName = uniqueUserName; this.password = пароль; this.products = продукты; } public Long getProducerId() { вернуть идентификатор производителя; } общественный недействительный setProducerId (Long ProduceId) { this.producerId = идентификатор производителя; } публичная строка getProducerName() { вернуть имя производителя; } public void setProducerName (String ProducerName) { this.producerName = имя производителя; } публичная строка getProducerAddress() { вернуть адрес производителя; } public void setProducerAddress (String ProducerAddress) { this.producerAddress = ProducerAddress; } общественная строка getProducerContactNumber() { вернуть номер контакта производителя; } public void setProducerContactNumber (String ProducerContactNumber) { this.producerContactNumber =productContactNumber; } общественная строка getProducerEmailAddress() { вернуть адрес производителяEmailAddress; } public void setProducerEmailAddress (String ProducerEmailAddress) { this.producerEmailAddress = ProducerEmailAddress; } общественная строка getUniqueUserName() { вернуть уникальное имя пользователя; } public void setUniqueUserName (String uniqueUserName) { this.uniqueUserName = uniqueUserName; } общественная строка getPassword() { вернуть пароль; } public void setPassword (строковый пароль) { this.password = пароль; } публичный список getProducts() { возврат продукции; } public void setProducts (Список продуктов ) { this.products = продукты; } } //служба подробной информации о пользователе пакет com.odopapi.odop_shi.security; импортировать com.odopapi.odop_shi.model.Producer; импортировать com.odopapi.odop_shi.repository.ProducerDao; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.security.core.userdetails.UserDetails; импортировать org.springframework.security.core.userdetails.UserDetailsService; импортировать org.springframework.security.core.userdetails.UsernameNotFoundException; импортировать org.springframework.stereotype.Service; @Услуга публичный класс CustomUserDetailService реализует UserDetailsService { @Autowired частный продюсерДао продюсерДао; @Override public UserDetails loadUserByUsername (String ProducerName) выдает UsernameNotFoundException { Производитель производитель = ProducerDao.findByUsername(producerName); если (продюсер == ноль) { throw new UsernameNotFoundException("Пользователь не найден с именем пользователя: " + ProducerName); } return org.springframework.security.core.userdetails.User.builder() .username(producer.getUniqueUserName()) .password(producer.getPassword()) //.roles(producer.getRoles()) // Роли должны представлять собой набор ролей пользователей (например, "ROLE_SELLER", "ROLE_BUYER") .строить(); } } //запрос почтальона { "producerName":"Раму", "producerAddress":"Варанаси", "producerContactNumber":"123456789", "producerEmailAddress":"aryan.123@gmail.com", "uniqueUserName":"ramu123", "пароль":"12345" } Я хочу добавить производителя в свою базу данных, чтобы, когда я перехожу на страницу входа в систему администратора, я мог аутентифицировать производителя по имени пользователя и паролю для входа в систему. а затем операция crud для этого пользователя
Реализация безопасности Spring — это то, что мне нужно.
Я хочу добавить данные производителя в свою базу данных через почтальона, но столкнулся с ошибкой 403. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение