2017-07-23 92 views
0

我有以下情況。春季安全授權檢查不起作用

@EnableWebSecurity 
@Configuration 
public class RetailerSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http 
       .csrf().ignoringAntMatchers("/login/**") 
       .and() 
       .authorizeRequests() 
       .antMatchers("/login", "/login/reset", "/resources/**", "/balance/getResult/**").permitAll() 
       .anyRequest().fullyAuthenticated() 
       .antMatchers("/retailers/**", "/balance/**").access("hasRole('ROLE_ADMIN')") 
       .antMatchers("/tellers/**", "/tellers").hasAnyAuthority("PRIMARY") 
       .antMatchers("/sell/**", "/sell").hasAnyAuthority("TELLER") 
       .and() 
       .formLogin() 
       .loginPage("/login") 
       .successForwardUrl("/login/success") 
       .permitAll() 
       .and() 
       .logout() 
       .permitAll(); 

    } 
} 

我也試過了一堆其他的排列,似乎沒有它的工作。我已經檢查過這部分代碼是否被執行,並且沒有錯誤。

編輯

忘了提,所有網址都沒有通過身份驗證的用戶訪問。但任何經過身份驗證的用戶都可以訪問所有網址。 E.g登錄爲PRIMARY,我可以打/sell/retailers/create這不應該發生。

我沒有辦法嘗試。恩......我已經退出了。我應該檢查什麼?

+0

什麼是點擊網址? – sunkuet02

+0

@ sunkuet02更新了這個問題。你可以拿'/ sell'作爲例子。 –

+0

@ sunkuet02增加了'csrf()。disable()',仍然是同樣的問題。 –

回答

0

奇怪,但移動anyRequest().fullyAuthenticated()之前權威設置修復它。最後它看起來像這樣

@EnableWebSecurity 
@Configuration 
public class RetailerSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http 
       .csrf().ignoringAntMatchers("/login/**") 
       .and() 
       .authorizeRequests() 
       .antMatchers("/login", "/login/reset", "/resources/**", "/balance/getResult/**").permitAll() 
       .antMatchers("/retailers/**", "/balance/**").access("hasRole('ROLE_ADMIN')") 
       .antMatchers("/tellers/**", "/tellers").hasAnyAuthority("PRIMARY") 
       .antMatchers("/sell/**", "/sell").hasAnyAuthority("TELLER") 
       .anyRequest().fullyAuthenticated() 
       .and() 
       .formLogin() 
       .loginPage("/login") 
       .successForwardUrl("/login/success") 
       .permitAll() 
       .and() 
       .logout() 
       .permitAll(); 

    } 
} 
+1

你知道我不能在2天之前 –