graph LR
Axes_Middleware["Axes Middleware"]
Access_Control_Engine["Access Control Engine"]
Attempt_Data_Management["Attempt Data Management"]
Data_Storage_Layer["Data Storage Layer"]
System_Configuration_Utilities["System Configuration & Utilities"]
Axes_Middleware -- "Intercepts Request, Initiates Access Check" --> Access_Control_Engine
Access_Control_Engine -- "Queries Attempts, Records Login Events" --> Attempt_Data_Management
Attempt_Data_Management -- "Persists Attempts, Retrieves Logs" --> Data_Storage_Layer
System_Configuration_Utilities -- "Provides Configuration, Initializes Settings" --> Access_Control_Engine
System_Configuration_Utilities -- "Manages Attempts (Reset/List)" --> Attempt_Data_Management
The django-axes architecture is centered around its Axes Middleware, which acts as the primary interceptor for all incoming Django requests. This middleware hands off control to the Access Control Engine, the core logic component responsible for evaluating access permissions and applying lockout rules based on configured settings and client data. The engine relies on the Attempt Data Management component, an abstract layer that orchestrates the recording and retrieval of access attempts, seamlessly integrating with either database or cache-based storage. All persistent data, including access attempts and logs, is managed by the Data Storage Layer through Django's ORM. Complementing these operational components, the System Configuration & Utilities module handles the application's lifecycle, loads and validates settings, and provides essential administrative tools for managing the security state. This modular design ensures clear separation of concerns, extensibility, and efficient integration within the Django framework, making it ideal for visual representation as a data flow diagram.
The primary entry point for django-axes, intercepting HTTP requests to initiate access control checks.
Related Classes/Methods:
The core decision-making component that evaluates access permissions, applies lockout policies, and processes client-specific data.
Related Classes/Methods:
An abstraction layer for handling access attempt data, decoupling the core logic from specific storage implementations (database or cache).
Related Classes/Methods:
Defines the Django ORM models for persisting access attempt and log data in the database.
Related Classes/Methods:
Manages application lifecycle, loads and validates configuration settings, and provides administrative commands for system management.
Related Classes/Methods: