SmarterTokenAuthenticationMiddleware

class smarter.lib.drf.middleware.SmarterTokenAuthenticationMiddleware(get_response)[source]

Bases: MiddlewareMixin, SmarterHelperMixin

Middleware to authenticate requests via SmarterTokenAuthentication, a subclass of knox.auth TokenAuthentication tokens. Provides seamless token authentication for incoming requests.

Does the following:

  • Checks for the presence of an Authorization header with a valid token.

  • Uses SmarterTokenAuthentication to authenticate the token.

  • Logs authentication attempts and outcomes.

  • adds Django signals for token authentication events.

  • verifies token activity.

  • adds timestamp update on token use.

Raises:
  • AuthenticationFailed – Raised when authentication fails.

  • SmarterTokenAuthenticationError – Raised for errors specific to SmarterTokenAuthentication.

__init__(get_response)[source]
authorization_header: str | None = None
property formatted_class_name: str

Return the formatted class name for logging purposes.

get_request_with_verified_user(request)[source]

Ensure the request has a user set, defaulting to SmarterAnonymousUser if not.

Return type:

HttpRequest

Parameters:

request (HttpRequest) – The incoming HTTP request.

is_token_auth(request)[source]

Check if the request is for knox token authentication.

Return type:

bool

Parameters:

request (HttpRequest) – The incoming HTTP request.

Returns:

True if the request uses token authentication, False otherwise.

Return type:

bool

masked_token: str | None = None
request: HttpRequest | None = None
url()[source]

Return the full URL from the request object.

Return type:

Optional[str]

Returns:

the complete url from the request object.

Return type:

Optional[str]