Я использую безопасность Spring в своем приложении для шифрования пароля пользователя в базе данных. В связи с этим я получаю сообщение «Используя сгенерированный пароль безопасности: XXXXXX» в моем журнале загрузки Spring при запуске приложения. Я не хотел, чтобы этот пароль генерировался, поэтому я использую @SpringBootApplication (exclude = {SecurityAutoConfiguration.class}) в своем основном классе. Ниже мой основной класс
package com.example.policymanagementsystem;
import org.apache.catalina.webresources.TomcatURLStreamHandlerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication (exclude = {SecurityAutoConfiguration.class })
@ComponentScan( basePackages = {"com.example.policymanagementsystem.bean"})
public class PolicymanagementsystemApplication {
public static void main(String[] args) {
SpringApplication.run(PolicymanagementsystemApplication.class, args);
}
}
Таким образом, пароль не генерируется при запуске весеннего загрузочного приложения, но когда я нажимаю API от почтальона, он дает мне ошибку 404 Not found для всех других API. Мне не нужна аутентификация ни для одного из моих API, поэтому я указал ниже конфигурацию в классе SecurityConfiguration.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable();
http.authorizeRequests().antMatchers("/admin/**").permitAll().antMatchers("/user/**").permitAll().anyRequest().authenticated();
http.exceptionHandling()
.authenticationEntryPoint(
(request, response, ex) -> {
response.sendError(
HttpServletResponse.SC_UNAUTHORIZED,
ex.getMessage()
);
}
);
http.addFilterBefore(jwtTokenFilter, UsernamePasswordAuthenticationFilter.class);
}
Пожалуйста, предложите мне какой-нибудь способ, чтобы я мог исключить SecurityAutoConfiguration.class и не получить ошибку 404, не найденную в моем ответе почтальона для любого API. Заранее спасибо!
нет, у меня нет зависимости от привода в pim.xml
пожалуйста, не используйте пользовательскую безопасность и вместо этого реализуйте JWT, используя встроенные функции безопасности Spring thomasandolf.medium.com/…




Удалите исключающую часть из @SpringBootApplication и. Добавьте эти две строки в файл application.properties.
spring.security.user.name=abc
spring.security.user.password=xxx
Попробуйте этот код для SecurityConfiguration. и удалите .anyRequest().authenticated(); потому что вам это не нужно.
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/admin").hasAuthority("ADMIN")
// .antMatchers("/post").authenticated()
.antMatchers("/post","/deleteComment/**", "/deletePost/**", "/updateComment/**",
"/updateCommentPage/**", "/updatePostPage/**","/api/draft/**","/api/post/**").hasAnyAuthority("USER","ADMIN")
.antMatchers("/","/api","/api/addComment/**","/api/viewPost/**").permitAll()
.and().formLogin()
.loginPage("/login").permitAll()
.and().httpBasic().and()
.logout().invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/logout-success").permitAll();
Я пробовал, как вы сказали. Но я получаю 401 неавторизованный для всех моих API, хотя я упомянул выше конфигурацию в своем классе SecurityConfiguration.
Можете ли вы поделиться своим файлом конфигурации безопасности?
Не могу поделиться своим файлом SecurityConfiguration из-за политик stackoverflow (файл слишком длинный), но я расширяю класс WebSecurityConfigurerAdapter и переопределяю метод configure.
хорошо, просто попробуйте удалить anyrequest().authenticated() и попробуйте реализовать код, подобный моему
чтобы обобщить проблему, когда я отключаю пружинную безопасность любым методом, либо используя аннотацию исключения в основном классе, либо, как упоминалось, вы добавляете несколько параметров в app.properties, я получаю 404 не найдено в ответе почтальона для всех API, и когда Я включаю весеннюю безопасность, она дает 401 несанкционированный ответ почтальону
Также я сбит с толку, если 404 не найдено, которое я получаю, на самом деле потому, что я отключаю весеннюю безопасность !!
Ваша установка на самом деле требует аутентификации - .anyRequest().authenticated(); Вы можете разрешить все для любого запроса, который должен это сделать.
http.authorizeRequests().anyRequest().permitAll();
Я нашел решение для этого, ошибка 404 не найдена была из-за того, что я не аннотировал поле в одном из классов моей модели с аннотацией @Id. Это решено сейчас.
У вас есть зависимость от привода в pom.xml?