2017-08-14 161 views
1

,我有以下實施MethodSecurityExpressionOperations定製SecurityExpressionOperations如春功能規劃環境地政司註冊方法

public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot implements MethodSecurityExpressionOperations { 
     private Object filterObject; 
     private Object returnObject; 

     CustomMethodSecurityExpressionRoot(Authentication authentication) { 
      super(authentication); 
     } 

     public boolean isTeamMember(Job job) { 
      //very interesting logic 
     } 

     @Override 
     public Object getFilterObject() { 
      return this.filterObject; 
     } 

     @Override 
     public Object getReturnObject() { 
      return this.returnObject; 
     } 

     @Override 
     public Object getThis() { 
      return this; 
     } 

     @Override 
     public void setFilterObject(Object obj) { 
      this.filterObject = obj; 
     } 

     @Override 
     public void setReturnObject(Object obj) { 
      this.returnObject = obj; 
     } 
    } 

正如你可以看到我已經自定義的方法稱爲isTeamMember。此方法已成功通過以下預授權批註進行評估:@PreAuthorize("isTeamMember(#job)")但不幸的是,它並未被解析爲Spring SpEL函數。

see the warning

是否有註冊isTeamMember爲SPEL功能的春天Bootish AUTOMAGIC方式?

回答

0

我會說這是IntelliJ IDEA的關注和完全無關的Function支持規劃環境地政司:

您可以通過註冊用戶定義的函數,可以表達字符串中被稱爲擴展規劃環境地政司。

沒有什麼從規劃環境地政司,Spring框架或Spring引導一邊做,因爲所有你需要的是有已經通過您的CustomMethodSecurityExpressionRoot

你在WARN中擁有的只是一個指針,IDEA對SpEL評估上下文的根對象的瞭解超出了您的自定義範圍CustomMethodSecurityExpressionRoot範圍。

你可能會這樣做#this.isTeamMember(#obj)#root.isTeamMember(#obj)具有相同的結果,但再次:沒有關於fucntions。不要混淆你自己。