def _verify(<EOL>self,<EOL>request,<EOL>return_payload=False,<EOL>verify=True,<EOL>raise_missing=False,<EOL>request_args=None,<EOL>request_kwargs=None,<EOL>*args,<EOL>**kwargs<EOL>):
if "<STR_LIT>" in request.headers:<EOL><INDENT>permakey = request.headers.get("<STR_LIT>")<EOL>payload = self._decode(permakey, verify=verify)<EOL>if return_payload:<EOL><INDENT>return payload<EOL><DEDENT>user_id = payload.get("<STR_LIT>", None)<EOL>user = userid_table.get(user_id)<EOL>if not user_id or not user:<EOL><INDENT>is_valid = False<EOL>reason = "<STR_LIT>"<EOL>status = <NUM_LIT><EOL><DEDENT>else:<EOL><INDENT>is_valid = user.permakey == permakey<EOL>reason = None if is_valid else "<STR_LIT>"<EOL>status = <NUM_LIT:200> if is_valid else <NUM_LIT><EOL><DEDENT>return is_valid, status, reason<EOL><DEDENT>else:<EOL><INDENT>return super()._verify(<EOL>request=request,<EOL>return_payload=return_payload,<EOL>verify=verify,<EOL>raise_missing=raise_missing,<EOL>request_args=request_args,<EOL>request_kwargs=request_kwargs,<EOL>*args,<EOL>**kwargs<EOL>)<EOL><DEDENT>
If there is a "permakey", then we will verify the token by checking the
database. Otherwise, just do the normal verification.

Typically, any method that begins with an underscore in sanic-jwt should
not be touched. In this case, we are trying to break the rules a bit to handle
a unique use case: handle both expirable and non-expirable tokens.