Все, что вам нужно сделать, это указать пользовательскую переменную в вашей политике квот. Если вы используете OAuth, вы можете установить атрибут в политике создания токена следующим образом.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-Gen-Token">
<DisplayName>OAuth Gen Token</DisplayName>
<FaultRules/>
<Properties/>
<Attributes>
<Attribute name="userid" ref="request.formparam.login" display="false"/>
</Attributes>
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>86400000</ExpiresIn>
<SupportedGrantTypes>
<GrantType>password</GrantType>
</SupportedGrantTypes>
<GrantType>request.formparam.grant_type</GrantType>
<UserName>request.formparam.login</UserName>
<PassWord>request.formparam.login</PassWord>
<Scope>request.formparam.scope</Scope>
<GenerateResponse/>
</OAuthV2>
Где ‹Атрибут name="userid" ref="request.formparam.login" display="false" /› становится уникальной переменной для этого пользователя. Он будет заполнен, когда вы проверите токен доступа как переменную с именем accesstoken.userid.
Затем определите свою квоту, используя эту переменную следующим образом:
<Quota async="false" continueOnError="false" enabled="true" name="Quota">
<DisplayName>Quota</DisplayName>
<FaultRules/>
<Properties/>
<Identifier ref="accesstoken.userid"/>
<Allow count="2000" countRef="apiproduct.developer.quota.limit"/>
<Interval ref="apiproduct.developer.quota.interval">30</Interval>
<Distributed>true</Distributed>
<Synchronous>false</Synchronous>
<TimeUnit ref="apiproduct.developer.quota.timeunit">minute</TimeUnit>
<AsynchronousConfiguration>
<SyncIntervalInSeconds>20</SyncIntervalInSeconds>
<SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
</Quota>
Затем ваша квота будет увеличиваться на ‹Идентификатор ref="accesstoken.userid" /›, который должен быть уникальным для каждого пользователя.
person
Michael Bissell
schedule
03.06.2014