首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全配置问题

Spring安全配置问题
EN

Stack Overflow用户
提问于 2020-06-05 01:44:26
回答 1查看 53关注 0票数 0

我刚刚开始了Spring的冒险之旅,请帮助我。

我尝试在Spring Boot应用程序上配置Spring Security,如下所示:

代码语言:javascript
复制
@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();
    }
}

我的控制器是:

代码语言:javascript
复制
@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类:

代码语言:javascript
复制
@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。

有人能帮我这个忙。我花了很多时间来解决这个问题,但没有找到解决方案。

谢谢!

编辑!enter image description here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-05 23:30:40

请从HomeworkApplication中删除@ComponentScan(basePackages = "main.service, main.repository")。它覆盖了SpringBootApplication的默认组件扫描。

如果您需要扫描特定包,请添加如下配置类,

代码语言:javascript
复制
@ComponentScan(basePackages = "main.service, main.repository")
@Configuration
public class AppConfig{
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62200952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档