django-login-required-middleware
django-login-required-middleware provide login to all requests through middleware.
If the website has many views and almost all use
LoginRequiredMixin
or the login_required
decorator, using django-login-required
can keep the code of your views more clear and avoids forgetting authentication of view.
Requirements
- Python 3.8 to 3.10 supported.
- Django 3.2 to 4.1 supported.
Quick start
- Install
pip install django-login-required-middleware
- Add
login_required.middleware.LoginRequiredMiddleware
toMIDDLEWARE
afterdjango.contrib.auth.middleware.AuthenticationMiddleware
-
(Optional) To ignore authentication in a view uses decorato
@login_not_required
for FBV orLoginNotRequiredMixin
for CBV:```python from login_required import login_not_required
@login_not_required def my_view(request): return HttpResponse() ```
or
```python from login_required import LoginNotRequiredMixin
class MyView(LoginNotRequiredMixin, View): def get(self, request, args, *kwargs): return HttpResponse() ```
-
(Optional) Add
LOGIN_REQUIRED_IGNORE_PATHS
setting. Any requests which match these paths will be ignored. This setting should be a list filled with regex paths (settings.LOGIN_URL
always included).Example:
python LOGIN_REQUIRED_IGNORE_PATHS = [ r'/accounts/logout/$', r'/accounts/signup/$', r'/admin/$', r'/about/$' ]
-
(Optional) Add
LOGIN_REQUIRED_IGNORE_VIEW_NAMES
setting. Any requests which match these url name will be ignored. This setting should be a list filled with url names.Example:
python LOGIN_REQUIRED_IGNORE_VIEW_NAMES = [ 'home', 'admin:index', 'admin:login', 'namespace:url_name', ]
-
(Optional) Add
LOGIN_REQUIRED_REDIRECT_FIELD_NAME
setting. This will be passed to Django's redirect_to_login(). Default is 'next'.Example:
python LOGIN_REQUIRED_REDIRECT_FIELD_NAME = 'next_url'