0

現在、Springセキュリティでは次のコードがあります。

<session-management>
    <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>

誰かが並行セッションを開始しようとすると、例外がスローされます。私のアプリケーションが例外を処理する方法は、例外をキャッチしてから、ユーザーに表示されるカスタム例外をスローすることです。私の質問は2部構成です。

まず、そして最も重要なこととして、セッション管理に与えることができるカスタムクラスを作成して、古い例外をキャッチして新しい例外をスローできるようにするにはどうすればよいですか?並行性制御をサブクラス化し、セキュリティコンテキスト内で何らかのBeanを作成する必要があるように思われますが、その方法がわかりません。

次に、スローされる例外(キャッチする必要がある例外)の名前は何ですか?私の推測では、AccessDeniedExceptionになると思いますが、よくわかりません。これは最初の質問ほど重要ではありません。サブクラス化する必要のある正しいクラスがわかれば、それがどのような例外になる可能性があるかがわかるからです。

助けてくれてありがとう、

MirroredFate

4

1 に答える 1

1

ああ...私は私の答えを見つけました。

サブクラス化ConcurrentSessionControlStrategyし、メソッドを上書きしましたallowableSessionsExceeded。このメソッドは、をスローSessionAuthenticationExceptionします。これは、再度スローする前に変更したメッセージです。このコードを追加する必要がありました:

<security:session-management session-authentication-strategy-ref="ccc"/>

<beans:bean id="ccc"
    class="com.lim.lds.client.sqlloader.security.CustomConcurrencyControl">
    <beans:constructor-arg name="sessionRegistry"
        ref="sessionRegistry" />
    <beans:property name="maximumSessions" value="1" />
</beans:bean>

<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />

私のspring-security.xmlファイルに。

これが同じような状況の人に役立つことを願っています!

于 2011-06-08T16:25:05.627 に答える