check abstract method
Inspects context and returns a SecurityResult.
Implementations should be side-effect-light with respect to
context.body (avoid destructive mutation) but may freely read/write
context.metadata to communicate with later layers.
Implementation
Future<SecurityResult> check(RequestContext context);