2017-06-21 36 views
0

我已經使用Spring Boot和由AngularJS提供支持的單頁面應用程序創建了REST API。如何從基於AngularJS的前端安全地與REST API後端進行通信

問題是如何防止每個人都使用我的REST API,這是在互聯網上公開的?我希望它只能在我的網頁上使用。

我無法使用角度方面的任何密碼/密碼/令牌,因爲它對任何人都是可見的。

+1

我只是想幫忙:[也許這個鏈接給你相關信息](https://stackoverflow.com/questions/24617452/only-allowing-certain-websites-access-php-api) –

回答

1

春季安全可以幫助解決這個問題。您可以定義一些只能由某些具有特定角色的用戶訪問的網址。

@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。

相關問題