[Web Service] 关于rop框架的访问频率控制如何实现

lqyf0609 2013-08-29
现使用rop框架,但是希望openapi调用的时候,对访问的频率进行控制,防止恶意的访问,不知道在rop框架上如何实现,求教!
Hulngjun 2013-08-29
同样疑问,
stamen 2013-09-02
1.实现InvokeTimesController接口:
这个你必须实现com.rop.security.InvokeTimesController即可,你必须自己记录历史的频率,然后做出频率是否超限的判断,参见如下的接口方法:
    /**
     * 应用的服务访问次数是否超限
     * @param appKey
     * @return
     */
    boolean isAppInvokeLimitExceed(String appKey);

    /**
     * 应用对服务的访问频率是否超限
     * @param appKey
     * @return
     */
    boolean isAppInvokeFrequencyExceed(String appKey);

如果isAppInvokeFrequencyExceed返回为true,则ROP会认为频率超限。

2.注册接口:
    <rop:annotation-driven
            id="router"
            session-manager="sampleSessionManager"
            app-secret-manager="appSecretManager"
            service-access-controller="serviceAccessController"
            formatting-conversion-service="conversionService"
            ext-error-base-name="i18n/rop/sampleRopError"
            service-timeout-seconds="10"
            thread-ferry-class="com.rop.sample.SampleThreadFerry"
            <!-- 在这儿注册之!! -->
            invoke-times-controller="invokeTimesController"
            upload-file-max-size="10"
            upload-file-types="png,gif"
            core-pool-size="200"
            max-pool-size="500"
            queue-capacity="50"
            keep-alive-seconds="300"
            sign-enable="true"/>
 <!--你自己实现的InvokeTimesController -->
  <bean id="invokeTimesController" class="com.rop.sample.SampleInvokeTimesController"/>
jiandong2008 2013-09-05
已经用于生产,亲测有效
jiandong2008 2013-09-05
public class AppKeyInvokeTimesController implements InvokeTimesController {
lqyf0609 2013-09-06
很好,谢谢,万分感谢啊
Global site tag (gtag.js) - Google Analytics