我刚刚开始了Spring的冒险之旅,请帮助我。
我尝试在Spring Boot应用程序上配置Spring Security,如下所示:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Value("${spring.queries.users-query}")
private String usersQuery;
@Value("${spring.queries.roles-query}")
private String rolesQuery;
@Autowired
private DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
/* auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery(usersQuery)
.authoritiesByUsernameQuery(rolesQuery)
.passwordEncoder(passwordEncoder());*/
auth.inMemoryAuthentication()
.withUser("user")
.password(passwordEncoder().encode("user"))
.authorities("ROLE_USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET,"/create").permitAll()
.anyRequest()
.authenticated();
http.csrf().disable();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}我的控制器是:
@RestController
public class LoginController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String login() {
return "working";
}
@GetMapping("/create")
public User create() {
User user = new User();
user.setPassword("user1");
user.setEmail("user1@wp.pl");
user.setName("user1");
userService.save(user);
return user;
}
}和我的run类:
@ComponentScan(basePackages = "main.service, main.repository")
@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class})
public class HomeworkApplication {
public static void main(String[] args) {
SpringApplication.run(HomeworkApplication.class, args);
}
}我使用POSTMAN来测试我的端点,但每次都会收到401。
有人能帮我这个忙。我花了很多时间来解决这个问题,但没有找到解决方案。
谢谢!
发布于 2020-06-05 23:30:40
请从HomeworkApplication中删除@ComponentScan(basePackages = "main.service, main.repository")。它覆盖了SpringBootApplication的默认组件扫描。
如果您需要扫描特定包,请添加如下配置类,
@ComponentScan(basePackages = "main.service, main.repository")
@Configuration
public class AppConfig{
}https://stackoverflow.com/questions/62200952
复制相似问题