Предотвращение доступа пользователя к странице входа в систему в django, когда он уже вошел в систему?
def admin_login(request):
if request.method == 'POST':
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request,username = username, password = password)
if user is not None:
if(user.is_superuser):
auth_login(request, user)
return redirect(reverse("dashboard"))
else:
messages.info(request, "invalid credentials")
return redirect(reverse("admin"))
return render(request,'login.html')
это функция mylogin для администратора, как предотвратить доступ пользователя к странице входа в систему после авторизации?
Вы можете проверить, аутентифицирован ли запрашивающий пользователь, и если да, то перенаправить его на другую страницу. Вы можете проверить, аутентифицирован ли пользователь, следующим образом
if request.user.is_authenticated:
# redirect
поэтому ваша функция представления будет выглядеть следующим образом
def admin_login(request):
if request.user.is_authenticated:
return redirect(reverse("admin"))
if request.method == 'POST':
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request,username = username, password = password)
if user is not None:
if(user.is_superuser):
auth_login(request, user)
return redirect(reverse("dashboard"))
else:
messages.info(request, "invalid credentials")
return redirect(reverse("admin"))
return render(request,'login.html')
сделайте это в начале вашей функции входа
def user_login(request, *args, **kwargs):
if(request.user.is_authenticated):
print('user authenticated')
return HttpResponseRedirect('/')