mirror of https://github.com/istio/istio.io.git
update rate limit to use session cookie (#3631)
This commit is contained in:
parent
e9dd610a93
commit
21641fc79a
|
|
@ -119,7 +119,7 @@ so the configuration to enable rate limiting on both adapters is the same.
|
|||
namespace: istio-system
|
||||
spec:
|
||||
# quota only applies if you are not logged in.
|
||||
# match: match(request.headers["cookie"], "user=*") == false
|
||||
# match: match(request.headers["cookie"], "session=*") == false
|
||||
actions:
|
||||
- handler: handler.redisquota
|
||||
instances:
|
||||
|
|
@ -334,7 +334,7 @@ so the configuration to enable rate limiting on both adapters is the same.
|
|||
|
||||
In the above example we have effectively rate limited `productpage` at `2 rps` per client IP.
|
||||
Consider a scenario where you would like to exempt clients from this rate limit if a user is logged in.
|
||||
In the `bookinfo` example, we use cookie `user=<username>` to denote a logged in user.
|
||||
In the `bookinfo` example, we use cookie `session=<sessionid>` to denote a logged in user.
|
||||
In a realistic scenario you may use a `jwt` token for this purpose.
|
||||
|
||||
You can update the `quota rule` by adding a match condition based on the `cookie`.
|
||||
|
|
@ -347,14 +347,14 @@ metadata:
|
|||
name: quota
|
||||
namespace: istio-system
|
||||
spec:
|
||||
match: match(request.headers["cookie"], "user=*") == false
|
||||
match: match(request.headers["cookie"], "session=*") == false
|
||||
actions:
|
||||
- handler: handler.memquota
|
||||
instances:
|
||||
- requestcount.quota
|
||||
{{< /text >}}
|
||||
|
||||
`memquota` or `redisquota` adapter is now dispatched only if `user=<username>` cookie is absent from the request.
|
||||
`memquota` or `redisquota` adapter is now dispatched only if `session=<sessionid>` cookie is absent from the request.
|
||||
This ensures that a logged in user is not subject to this quota.
|
||||
|
||||
1. Verify that rate limit does not apply to a logged in user.
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ keywords: [policies,quotas]
|
|||
namespace: istio-system
|
||||
spec:
|
||||
# quota only applies if you are not logged in.
|
||||
# match: match(request.headers["cookie"], "user=*") == false
|
||||
# match: match(request.headers["cookie"], "session=*") == false
|
||||
actions:
|
||||
- handler: handler.redisquota
|
||||
instances:
|
||||
|
|
@ -310,14 +310,14 @@ metadata:
|
|||
name: quota
|
||||
namespace: istio-system
|
||||
spec:
|
||||
match: match(request.headers["cookie"], "user=*") == false
|
||||
match: match(request.headers["cookie"], "session=*") == false
|
||||
actions:
|
||||
- handler: handler.memquota
|
||||
instances:
|
||||
- requestcount.quota
|
||||
{{< /text >}}
|
||||
|
||||
只有当请求中没有 `user = <username>` cookie 时,才会调度 `memquota` 或 `redisquota` 适配器。
|
||||
只有当请求中没有 `session = <sessionid>` cookie 时,才会调度 `memquota` 或 `redisquota` 适配器。
|
||||
这可确保登录用户不受此配额的约束。
|
||||
|
||||
1. 验证速率限制不适用于登录用户。
|
||||
|
|
|
|||
Loading…
Reference in New Issue