2016-10-07 60 views
0

我在彈簧引導安全方面玩了一下。我使用mongodb,spring-boot-starter-data-rest,spring-boot-starter-security和spring-boot-starter-web。我使用了像REST服務這樣的自動曝光庫的可能性。我有兩個存儲庫用戶和客戶。用戶存儲庫用於帳戶。 後擴展WebSecurityConfigurerAdapter這樣的:使用彈簧引導進行休息服務的訪問控制

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    super.configure(http); 
    http.authorizeRequests() 
    .antMatchers("https://stackoverflow.com/users/**") 
    .hasRole("ADMIN").antMatchers("/", "/customers") 
    .hasRole("USER") 
    .anyRequest().authenticated() 
    .and() 
    .formLogin().permitAll(); 
} 

A無法控制與他們有ADMIN角色的用戶訪問/用戶/頁。在訪問服務時我獲得了身份驗證,但每個角色的每個用戶都可以隨處訪問。應該配置什麼?

回答

1

這聽起來像你需要看看Spring Security的Method Security Expressions功能。特別註釋@PreAuthorize/@PostAuthorize

+0

是的,還有一種方法從哪個類?我只有實體類users.java和customer.java。我使用自動生成的REST? – vmaric

+0

因此,您需要明確使用Spring Data JPA存儲庫來實現控制器+服務層。之後,@ @ PreAuthorize' /'@ PostAuthorize'的最佳位置就是服務層方法。 – luboskrnac

+0

我不能使用MongoDB自動曝光實體(與生成的REST),我希望實現訪問控制? – vmaric

相關問題