【问题标题】:Make Spring-Security oauth services transactional使 Spring-Security oauth 服务具有事务性
【发布时间】:2015-01-19 16:06:06
【问题描述】:

我开发了一个基于 Spring-Security OAuth 项目 (http://projects.spring.io/spring-security-oauth/) 的 oauth 提供程序。 我确实需要将令牌信息持久化到数据库中,然后我使用 mybatis(我的持久性框架)实现了一个新的 TokenStore。

现在的问题是令牌的持久化不是事务性的,如果你使用spring提供的(开箱即用的)组件JdbcTokenStore也会发生同样的情况。

我应该把事务控制放在哪里? 我应该对 tokenServices 服务(DefaultTokenServices 类)还是端点(/oauth/token)应用事务控制?

谢谢

【问题讨论】:

    标签: spring oauth spring-security transactional


    【解决方案1】:

    我所做的是直接在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 2015-12-11
      • 2016-07-10
      • 2022-01-14
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      相关资源
      最近更新 更多