如何获取 Token 的状态?

How to get the state of a Token?

我正在尝试实施一种方法来限制令牌只能使用一次。首次使用后,您不能通过使用 UsedAlready 标记标记其状态的令牌并在其尚未使用时标记为 Unused 来正常使用它。我如何在 apigee 中做到这一点?目前我有以下条件判断Token是否已经被使用

 <Step>
    <Condition>(request.queryparam.state NotEquals accesstoken.state)</Condition>
    <Name>RF-TokenAlreadyUsed</Name>
</Step>

尽管在我的 Tracetool 上查看,apigee 抛出我的 accesstoken.state 不包含任何内容,但这是为什么呢?我的 API 用于在创建令牌时保存默认状态的代理和策略似乎无论如何都能正常工作。

PS:我也做了几乎相同的事情,但使用了一个不存在的变量,而不是使用属性将令牌关联到特定帐户。但是对状态做同样的事情和我对属性所做的一样是行不通的。不过,我做错了什么?我使用的是 apigee 的状态参数吗? ,因为状态参数是一个可选参数,如范围,我想利用状态来实现令牌可访问性。

原来我用错了状态。一个国家应该像 thread.

中所述的那样运作

因此,为了让我能够做我想做的事情,我应该向令牌添加另一个属性,以便我知道令牌是否已被使用。这并不是说我在使用属性之前没有做过类似的事情,而是我认为状态的使用是为了令牌可访问性。

你能解释一下为什么你更担心令牌状态吗?除非您将令牌存储在缓存中,否则您将为每个请求获得一个新令牌。 而且您在 APIGEE 中有一个 built-in 策略来验证您的令牌。

即使您将令牌存储在缓存中,您也可以设置令牌的到期时间。

此外,缓存是为了减少流量和重复使用令牌。

所以我无法理解你的 objective,你能解释更多吗?

@user2462133

回答你的问题。

我们希望token1只有效一次,下次付款就无效了。但是这个 token1 将用于生成新的 token2 以再次访问付款 API 因为之前制作的 token 是用于首次使用时绑定帐户。然后,这个新的 token2 将具有另一个状态,该状态仅有效一次,并且在成功交易后,即使令牌尚未过期,它也不会再次对另一笔交易有效。对于另一笔付款,将再次调用 token1 并检查其是否仍然是有效令牌,如果是,则为另一笔付款创建另一个 token2。但是如果这个token1已经过期了。然后用户将不得不通过登录到他的帐户(即 facebook),进行 OTP 等将他的帐户再次绑定到我们的服务。为了能够获得另一个令牌 1,该令牌将仅用于支付一次但多次用于验证账号是否绑定了我们的服务