2017-11-23 14 views
0

私はトークンを使用してパーミッションをチェックするためにスプリングブートを使用して残りのAPIサービスを開発しています - ログインリクエストでmemcacheにキー値を保存し、トークン(文字列)を長さ50でキーしますあなたのID。私の残りのコントローラにアクセスするには、私の残りのコントローラは、このトークンを取得パラメータ(POSTと同じロジック、put ...)よりもユーザーのIDを得る(memcacheから)例 "carwashs/2 PUT"これらのFKのものが類似している場合は、洗車を更新するアクセス権を持っている場合、車の洗浄は会社にFKを、ユーザーにはFKがあります。スプリングセキュリティを使用して残りのAPIを確保する別のアプローチを探しています現在の方法は安全ではありません(私はURLのトークンを参照して、すべてのHTTPリクエストでパラメータを取得します)。しかし、公式の文書で与えられている例では、春のセキュリティはパーミッションenumとログインページでしか動作しないようです。パーミッションを使用して残りのAPIを保護する方法

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("anon").password("123456").roles("USER"); 
     auth.inMemoryAuthentication().withUser("admin").password("123456").roles("ADMIN"); 
     auth.inMemoryAuthentication().withUser("userr").password("123456").roles("DBA"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http.authorizeRequests() 
     .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')") 
     .antMatchers("/dba/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_DBA')") 
     .and().formLogin(); 

    } 
} 

このアプローチを使用して特定の洗車に許可を確認する方法はありますか?

+0

私はあなたが春のaclを必要と思う:https:// do e- –

答えて

1

あなたは内蔵の

http.authorizeRequests().hasAuthority("ROLE_ADMIN").antMatchers("/dump/**") 

またはあなたが

@PreAuthorize("#id == user.companyId") 

のような注釈とメソッドのセキュリティ式を使用することができますし、また、あなたがそこに

で見ることができるように春のセキュリティから式を共通使用することができます

https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html

関連する問題