自定义验证器

当您想要更改现有授权的特定行为时,自定义验证器非常有用。这往往是必要的,因为身份识别软件的多样性,并使oauthlib框架尽可能灵活。

但是,如果您正在考虑编写自定义授权类型,请参阅 Custom Grant Type 取而代之的是。

class oauthlib.oauth2.rfc6749.grant_types.base.ValidatorsContainer(post_auth, post_token, pre_auth, pre_token)[源代码]

容器对象,用于保存要作为授权类型的一部分调用的自定义验证器可调用对象 validate_authorization_request()validate_authorization_request() 关于各种赠款类型的方法。

授权验证器必须是接受请求对象并返回字典的可调用函数,该字典可能包含要添加到 request_info 验证后从GRANT_TYPE返回。

令牌验证器必须是接受请求对象并不返回任何对象的可调用函数。

如果验证条件失败,授权验证器和令牌验证器都可能引发OAuth2异常。

授权验证器添加到 pre_auth 将在标准验证之前(但在引发致命错误的关键验证之后)作为 validate_authorization_request()

授权验证器添加到 post_auth 将在标准验证之后运行,作为 validate_authorization_request()

令牌验证器已添加到 pre_token 将在标准验证之前运行,作为 validate_token_request()

令牌验证器已添加到 post_token 将在标准验证之后运行,作为 validate_token_request()

例如:

>>> def my_auth_validator(request):
...    return {'myval': True}
>>> auth_code_grant = AuthorizationCodeGrant(request_validator)
>>> auth_code_grant.custom_validators.pre_auth.append(my_auth_validator)
>>> def my_token_validator(request):
...     if not request.everything_okay:
...         raise errors.OAuth2Error("uh-oh")
>>> auth_code_grant.custom_validators.post_token.append(my_token_validator)