クラス ExpressionBasedMessageSecurityMetadataSourceFactory
- java.lang.Object
-
- org.springframework.security.messaging.access.expression.ExpressionBasedMessageSecurityMetadataSourceFactory
public final class ExpressionBasedMessageSecurityMetadataSourceFactory extends java.lang.Object
Spring 式にマップされたMessageMatcher
を使用するMessageSecurityMetadataSource
を作成するために使用されるクラス。- 導入:
- 4.0
メソッドのサマリー
すべてのメソッド 静的メソッド 具象メソッド 修飾子と型 メソッド 説明 static MessageSecurityMetadataSource
createExpressionMessageMetadataSource(java.util.LinkedHashMap<MessageMatcher<?>,java.lang.String> matcherToExpression)
Spring 式にマップされたMessageMatcher
を使用するMessageSecurityMetadataSource
を作成します。static MessageSecurityMetadataSource
createExpressionMessageMetadataSource(java.util.LinkedHashMap<MessageMatcher<?>,java.lang.String> matcherToExpression, SecurityExpressionHandler<org.springframework.messaging.Message<java.lang.Object>> handler)
Spring 式にマップされたMessageMatcher
を使用するMessageSecurityMetadataSource
を作成します。
メソッドの詳細
createExpressionMessageMetadataSource
public static MessageSecurityMetadataSource createExpressionMessageMetadataSource(java.util.LinkedHashMap<MessageMatcher<?>,java.lang.String> matcherToExpression)
Spring 式にマップされたMessageMatcher
を使用するMessageSecurityMetadataSource
を作成します。各エントリは順番に考慮され、最初に一致したものだけが使用されます。例:LinkedHashMap<MessageMatcher<?>,String> matcherToExpression = new LinkedHashMap<MessageMatcher<Object>,String>(); matcherToExpression.put(new SimDestinationMessageMatcher("/public/**"), "permitAll"); matcherToExpression.put(new SimDestinationMessageMatcher("/admin/**"), "hasRole('ROLE_ADMIN')"); matcherToExpression.put(new SimDestinationMessageMatcher("/topics/{name}/**"), "@someBean.customLogic(authentication, #name)"); matcherToExpression.put(new SimDestinationMessageMatcher("/**"), "authenticated"); MessageSecurityMetadataSource metadataSource = createExpressionMessageMetadataSource(matcherToExpression);
宛先が "/public/hello" の場合、"/public/**" と "/**" に一致します。ただし、最初のエントリであるため、"/public/**" のみが使用されます。つまり、宛先 "/public/hello" は "permitAll" にマップされます。
式の完全なリストについては、
MessageSecurityExpressionRoot
を参照してください- パラメーター:
matcherToExpression
-AbstractSecurityExpressionHandler.getExpressionParser()
を使用して式に変換される文字列へのMessageMatcher
の順序付けられたマッピング- 戻り値:
- 使用する
MessageSecurityMetadataSource
。null にはできません。
createExpressionMessageMetadataSource
public static MessageSecurityMetadataSource createExpressionMessageMetadataSource(java.util.LinkedHashMap<MessageMatcher<?>,java.lang.String> matcherToExpression, SecurityExpressionHandler<org.springframework.messaging.Message<java.lang.Object>> handler)
Spring 式にマップされたMessageMatcher
を使用するMessageSecurityMetadataSource
を作成します。各エントリは順番に考慮され、最初に一致したものだけが使用されます。例:LinkedHashMap<MessageMatcher<?>,String> matcherToExpression = new LinkedHashMap<MessageMatcher<Object>,String>(); matcherToExpression.put(new SimDestinationMessageMatcher("/public/**"), "permitAll"); matcherToExpression.put(new SimDestinationMessageMatcher("/admin/**"), "hasRole('ROLE_ADMIN')"); matcherToExpression.put(new SimDestinationMessageMatcher("/topics/{name}/**"), "@someBean.customLogic(authentication, #name)"); matcherToExpression.put(new SimDestinationMessageMatcher("/**"), "authenticated"); MessageSecurityMetadataSource metadataSource = createExpressionMessageMetadataSource(matcherToExpression);
宛先が "/public/hello" の場合、"/public/**" と "/**" に一致します。ただし、最初のエントリであるため、"/public/**" のみが使用されます。つまり、宛先 "/public/hello" は "permitAll" にマップされます。
式の完全なリストについては、
MessageSecurityExpressionRoot
を参照してください- パラメーター:
matcherToExpression
-AbstractSecurityExpressionHandler.getExpressionParser()
を使用して式に変換される文字列へのMessageMatcher
の順序付けられたマッピングhandler
- 使用するSecurityExpressionHandler
- 戻り値:
- 使用する
MessageSecurityMetadataSource
。null にはできません。