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

时间:2014-05-23 18:59:47

标签: javascript spring rest backbone.js spring-boot

我试图围绕高级概念,我刚刚开始学习Spring Security。虽然最终我想支持“通过谷歌登录”(和其他社交媒体),但现在我只是原型设计,所以我想要的是一种快速的方式来为我的应用添加用户支持以进行测试。

我正在使用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中有没有惯用的方法?

1 个答案:

答案 0 :(得分:0)

浏览器应该发送会话cookie及其请求,因此一旦您进行了身份验证,它应该可以正常工作。您有403响应(不是401)的事实表明它 正在工作。也许你在寻找一个你不被允许看到的资源,或者也许是其他东西。如果你在org.springframework.security上启动调试日志记录,它应该告诉你发生了什么。