Some types and fields can contain data that is specific to a certain user. Cached query results that contain those types or fields should not be returned to any other user.
In order to handle this scenario you can define "scopes" in your graphcdn.yml
, which let you scope (hence the name) cached query results to specific headers and/or cookies.
Every service has a special PUBLIC
scope it uses by default. This scope returns the same cached results for all users.
Basics
You can define scopes in your graphcdn.yml
based on the header and/or cookie your users use to authenticate:
scopes:
AUTHORIZATION_HEADER: "header:Authorization"
SESSION_COOKIE: "cookie:session"
Recommended: Unless you're certain you want to cache them separately, combine all your authentication methods into a single scope with a pipe (|
, which means "or") to avoid having to create excessive rules:
scopes:
AUTHENTICATED: "header:Authorization|cookie:session"
Using scopes
To set the scope a certain query result should be cached by, create a cache rule for the types you want to cache separately per-user (see ‣ for more information):
rules:
- description: "Cache any user-specific data per-user"
scope: AUTHENTICATED
types:
User: true
Now any query result that contains any User
will be cached with the corresponding cookie and/or header of the AUTHENTICATED scope and will only be returned for the same requester. Users that aren't authenticated will still get the same cached results.