2016-12-18 139 views
0

我試圖通過引入PreInvocationAuthorizationAdvice來實現我自己的授權機制。這裏是我的代碼:爲什麼我的PreInvocationAuthorizationAdvice.before未被調用?

我的SecurityContext:

我SecurityAdapter:

@Configuration 
@EnableWebSecurity 
public class SecurityAdapter extends WebSecurityConfigurerAdapter 
{ 
    @Override 
    protected void configure(HttpSecurity http) 
     throws Exception 
    { 
     http 
      .authorizeRequests() 
      .anyRequest().permitAll(); 
     http 
      .csrf() 
       .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); 
    } 
} 

最後MyPreInvocationAdvice

public class MyPreInvocationAdvice implements PreInvocationAuthorizationAdvice 
{ 
    public MyPreInvocationAdvice() 
    { 
    } 

    @Override 
    public boolean before(Authentication authentication, MethodInvocation methodInvocation, PreInvocationAttribute preInvocationAttribute) 
    { 
     return true; 
    } 
} 

在這一刻,我授權的所有請求。但問題是,當我提出請求時,根本不會調用before方法。有人可以告訴我我犯了什麼錯誤嗎?

回答

0

我自己找到了答案,所以我可以在將來自己參考,在這裏。

您的控制器需要註明@PreAuthorize("")。如果你以後不想使用它,那麼String值並不重要(這將是你的代碼使用它,所以如果你不想使用它,就放棄它)。

@RestController 
@PreAuthorize("") 
public class Controller 
{ 
} 
相關問題