如何安全地从基于AngularJS的前端到REST API后端进行通信

时间:2017-06-21 10:19:57

标签: angularjs spring rest security

我已经使用由AngularJS提供支持的Spring Boot和单页应用程序创建了REST API。

问题是如何阻止每个人使用我在互联网上公开提供的REST API?我希望它只能在我的网页上使用。

我无法使用角度方面的任何秘密/密码/令牌,因为任何人都可以看到它。

1 个答案:

答案 0 :(得分:1)

Spring安全可以帮助解决这个问题。您可以定义仅由具有特定角色的特定用户访问的一些URL。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    protected void configures(HttpSecurity http) throws Exception {

        http.exceptionHandling()
            .accessDeniedPage("/error").and()
            .authorizeRequests()
            .antMatchers("/api/**").hasAnyRole("USER_ROLE");
    }
}

因此,只有角色为“USER_ROLE”的人才能访问以“/ api”开头的任何网址。 要获得此功能,您必须实现一个登录系统,该系统在成功登录后为用户分配“USER_ROLE”。

在AngularJs部分,它很容易。您只需向REST API发出http请求,因为浏览器包含cookie和JSESSIONID,它将与标头中的请求一起发送。 Spring选择它并检查具有该JSESSIONID的用户是否有权访问该URL。