Home > Software design >  prevent user to access login page in django when already logged in?
prevent user to access login page in django when already logged in?

Time:12-30

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') 
 

this is mylogin function for admin , how to prevent user to access login page once logged in?

CodePudding user response:

You can check if the user who is requesting is authenticated and if so, you can redirect him to another page. You can check user if he is authenticated like this

if request.user.is_authenticated:
    # redirect

so your view function will be like this

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') 

CodePudding user response:

do this in beginning of your login function

def user_login(request, *args, **kwargs):
    if(request.user.is_authenticated):
        print('user authenticated')
        return HttpResponseRedirect('/')
  • Related