クラス SecurityEvaluationContextExtension

  • 実装されたすべてのインターフェース:
    org.springframework.data.spel.spi.EvaluationContextExtensionorg.springframework.data.spel.spi.ExtensionIdAware

    public class SecurityEvaluationContextExtension
    extends java.lang.Object
    implements org.springframework.data.spel.spi.EvaluationContextExtension

    このオブジェクトを Bean として定義することにより、Spring Security は Spring Data クエリを作成するための SpEL 式として公開されます。

    Java ベースの構成では、以下を使用して Bean を定義できます。

    例: 次の User オブジェクトを継承する UserDetails を返す場合:

     @Entity
     public class User {
         @GeneratedValue(strategy = GenerationType.AUTO)
         @Id
         private Long id;
    
         ...
     }
     

    そして、次のようなメッセージオブジェクトがあります。

     @Entity
     public class Message {
         @Id
         @GeneratedValue(strategy = GenerationType.AUTO)
         private Long id;
    
         @OneToOne
         private User to;
    
         ...
     }
     
    次の Query アノテーションを使用して、現在のユーザー宛てのメッセージのみを検索できます。
     @Repository
     public interface SecurityMessageRepository extends MessageRepository {
    
            @Query("select m from Message m where m.to.id = ?#{ principal?.id }")
            List<Message> findAll();
     }
     
    これは、このインスタンスのプリンシパルが id フィールドを持つユーザーであるために機能します。
    導入:
    4.0
    • コンストラクターの詳細

      • SecurityEvaluationContextExtension

        public SecurityEvaluationContextExtension()
        SecurityContextHolder で見つかった現在の Authentication を使用する新しいインスタンスを作成します。
      • SecurityEvaluationContextExtension

        public SecurityEvaluationContextExtension​(Authentication authentication)
        常に同じ Authentication オブジェクトを使用する新しいインスタンスを作成します。
        パラメーター:
        authentication - 使用する Authentication
    • メソッドの詳細

      • getExtensionId

        public java.lang.String getExtensionId()
        次で指定:
        インターフェース org.springframework.data.spel.spi.ExtensionIdAwaregetExtensionId 
      • getRootObject

        public SecurityExpressionRoot getRootObject()
        次で指定:
        インターフェース org.springframework.data.spel.spi.EvaluationContextExtensiongetRootObject