如何在Spring Boot中使用Backbone和REST进行身份验证

How to authenticate in Spring Boot using Backbone and REST?

本文关键字:Backbone REST 身份验证 Spring Boot      更新时间:2023-09-26

我正在努力掌握高级概念,同时我刚刚开始学习Spring Security。虽然最终我想要支持"通过Google登录"(和其他社交媒体),但现在我只是在做原型,所以我想要的只是一种快速的方法来为我的应用添加用户支持,以进行测试。

我正在使用Spring Boot和Backbone。在初始页面加载之后,所有请求都通过Backbone通过REST发出。到目前为止,我对Spring Security做的还不多,但是如果我添加这个配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .jdbcAuthentication()
            .dataSource(dataSource)             
            .usersByUsernameQuery("SELECT username, password,enabled FROM users WHERE username=?")               
            .authoritiesByUsernameQuery("SELECT username, authority FROM authorities WHERE username = ?")                
            .rolePrefix("ROLE_");
}

然后当我去我的应用程序,我得到一个登录表单,如果我输入一个有效的用户,我可以访问应用程序,这是一个很好的开始。

但是当Backbone尝试REST调用时,它不起作用。我只得到一个403 - Forbidden

我想我明白为什么高层会发生这种事。我假设我需要在向服务器发送每个请求时发送用户详细信息。但我不确定这在Spring Security中是如何工作的,而且我找不到任何文档来解释它。

在这里,我宁愿遵循Spring Security指导方针,而不愿尝试自己的解决方案并重新发明轮子。

在Spring Security中是否有一种惯用的方法来做到这一点?

浏览器应该发送会话cookie与它的请求,所以一旦您通过身份验证,它应该工作正常。您有一个403响应(而不是401)这一事实表明它正在工作。也许你正在请求一个你不允许看到的资源,或者是其他的东西。如果你打开org.springframework.security上的调试日志,它应该会告诉你发生了什么。