gpt4 book ai didi

java - spring中如何子类并发控制,抛出什么异常?

转载 作者:行者123 更新时间:2023-12-01 15:50:01 25 4
gpt4 key购买 nike

现在在 Spring security 中我有以下代码:

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

如果有人尝试启动并发 session ,则会引发异常。我的应用程序处理异常的方式是捕获异常,然后抛出将显示给用户的自定义异常。我的问题分为两部分。

首先,也是最重要的,如何创建一个可以提供给 session 管理的自定义类,以便它可以捕获旧异常并抛出新异常?在我看来,我需要对并发控制进行子类化,并在我的安全上下文中创建某种 bean,但我不知道该怎么做。

第二,将抛出的异常的名称是什么(我需要捕获的异常)?我的猜测是这将是一个 AccessDeniedException,但我不确定。这并不像第一个问题那么重要,因为一旦我知道了正确的类,我必须子类化,我就会知道它可能是什么异常(exception)。

感谢您的帮助,

镜像命运

最佳答案

啊...我找到了答案。

我对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 文件。

希望这对遇到类似情况的人有所帮助!

关于java - spring中如何子类并发控制,抛出什么异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6281219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com