使Spring-Security oauth服务具有事务性

ldioqlga  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(116)

我已经开发了一个基于Spring-Security OAuth项目(http://projects.spring.io/spring-security-oauth/)的OAuth提供程序。我确实需要将令牌信息持久化到数据库中,然后我使用MyBatis(我的持久化框架)实现了一个新的TokenStore
现在的问题是令牌的持久性不是事务性的,如果使用Spring提供的(开箱即用)组件JdbcTokenStore,也会发生同样的情况。
我应该把事务控制放在哪里?我应该在tokenServices服务(DefaultTokenServices类)或端点(/oauth/token)上应用事务控制吗?

nxowjjhe

nxowjjhe1#

我所做的是直接在DefaultTokenServices上添加一个方面,以给予它事务性行为,因此对此类方法的每个调用都是事务性的。

<tx:advice id="txAdvice" transaction-manager="transactionManager">
     <tx:attributes> 
        <tx:method name="get*, is*, read*" read-only="true"/> 
        <tx:method name="*"/> 
     </tx:attributes> 
</tx:advice> 
<aop:config> 
    <aop:pointcut id="tokenServicesPointcut" expression="bean(tokenServices)"/> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="tokenServicesPointcut"/> 
 </aop:config>

相关问题