AssignmentFilter
Verifies that a specified condition is met. If the condition is met or if no condition is specified, the value is assigned to the target. Values can be assigned before the request is handled and after the response is handled.
Usage
{
"name": string,
"type": "AssignmentFilter",
"config": {
"onRequest": [
{
"condition": runtime expression<boolean>,
"target": lvalue-expression,
"value": runtime expression
}, ...
],
"onResponse": [
{
"condition": runtime expression<boolean>,
"target": lvalue-expression,
"value": runtime expression
}, ...
]
}
}
Properties
"onRequest"
: array of objects, optional-
Defines a list of assignment bindings to evaluate before the request is handled.
"onResponse"
: array of objects, optional-
Defines a list of assignment bindings to evaluate after the response is handled.
"condition"
: runtime expression<boolean>, optional-
If the expression evaluates
true
, the value is assigned to the target.Default:
${true}
"target"
: <lvalue-expression>, required-
Expression that yields the target object whose value is to be set.
"value"
: runtime expression<object> , optional-
The value to be set in the target. The value can be a string, information from the context, or even a whole map of information.
Examples
The following example assigns a value to a session. Add the filter to a route to prevent IG from clearing up empty JWTSession cookies:
{
"type": "AssignmentFilter",
"config": {
"onRequest": [{
"target": "${session.authUsername}",
"value": "I am root"
}]
}
}
The following example captures credentials and stores them in the IG session during a login request. Notice that the credentials are captured on the request but are not marked as valid until the response returns a positive 302. The credentials could then be used to log a user in to a different application:
{
"name": "PortalLoginCaptureFilter",
"type": "AssignmentFilter",
"config": {
"onRequest": [
{
"target": "${session.authUsername}",
"value": "${request.queryParams['username'][0]}"
},
{
"target": "${session.authPassword}",
"value": "${request.queryParams['password'][0]}"
},
{
"comment": "Authentication has not yet been confirmed.",
"target": "${session.authConfirmed}",
"value": "${false}"
}
],
"onResponse": [
{
"condition": "${response.status.code == 302}",
"target": "${session.authConfirmed}",
"value": "${true}"
}
]
}
}