【发布时间】:2016-12-30 20:24:27
【问题描述】:
我创建了一个简单的 Spring Boot/JS 应用程序。在下一步中,我尝试实现一个用户管理功能来处理多个用户。
所以我实现了一个用户模型和控制器,并通过 Spring Security 的身份验证来保护所有的 rest-api 调用。
@Configuration
@EnableWebSecurity
@ComponentScan("package.packagename")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception{
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery("select email, password, active from accounts where email=?")
.authoritiesByUsernameQuery("select email, role from account_roles where email=?");
}
@Override
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin().permitAll()
.and()
.authorizeRequests()
.antMatchers("/index.html", "/").permitAll()
.anyRequest().authenticated()
.and()
.logout();
}
}
除了这个文件,我还有 SecurityWebApplicationInitializer
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
我现在的问题是,如果我启动应用程序并尝试通过 localhost:8080 访问它,我将面临 404 错误。 通常应用程序即使没有登录也应该工作,并且似乎启用了 springsecurity 的应用程序无法加载资源/公共目录中的 js 内容。
阅读日志显示如下:
在名称为“dispatcherServlet”的 DispatcherServlet 中找不到带有 URI [/] 的 HTTP 请求的映射
如果我在没有 spring security 的情况下启动应用程序,它可以正常工作。
api 调用的保护就像一个魅力——我能够登录、接收一个 cookie 并使用这个 cookie 对由 springsecurity 保护的 api 函数进行身份验证。
我希望你能帮助我解决我的(希望很小)问题。
提前致谢
【问题讨论】:
标签: spring spring-security spring-boot