Всем привет.
Изначально стоит задача, закрыть весь сайт от не авторизованных пользователей.
Пробую решить это написание своего middleware, но столкнулся с бесконечным редиректом при выполнении условия.
Сам класс middleware:
class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
login_path = '/account/login/'
response = self.get_response(request)
if not request.user.is_authenticated and request.path != login_path:
return HttpResponseRedirect(reverse('account:user_login'))
# Code to be executed for each request/response after
# the view is called.
return response
Сама вьюха:
def user_login(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
user = authenticate(username=cd['username'], password=cd['password'])
if user is not None:
if user.is_active:
login(request, user)
return HttpResponse('Authenticated successfully')
else:
return HttpResponse('Disabled account')
else:
return HttpResponse('Invalid login')
else:
form = LoginForm()
return render(request, 'account/login.html', {'form': form})
url из account
urlpatterns = [
path('login/', views.user_login, name='login'),
]
и urls проекта
urlpatterns = [
path('admin/', admin.site.urls),
path('travel/', include(('travel.urls', 'travel'), namespace='travel')),
path('account/', include(('account.urls', 'account'), namespace='account'))
]
Сам middleware подключен последний в settings.py
Как итог: получаю бесконечный луп (302 в консоли), на морду не возвращается ничего (сайт не ответил)
Что я делаю не так и куда копать дальше?)
Заранее всем спасибо!)