Ограничение вошедшего в систему пользователя для доступа к главной странице входа и регистрации без выхода - PullRequest
0 голосов
/ 23 апреля 2019

Как в фейсбуке.после входа в систему пользователям предлагается перейти на домашнюю страницу пользователяно он не позволяет зарегистрированным пользователям возвращаться на страницу входа, если только пользователи не вышли из системы.так как предотвратить вход вошедших в систему пользователей после входа в систему

 def register(request):
    form = self.register_form(request.POST)
    if request.method=='POST':
        if form.is_valid():
            user = form.save(commit=False)
            firstName=form.cleaned_data.get('firstName')
            lastName=form.cleaned_data.get('lastName')
            username=form.cleaned_data.get('username')
            email=form.cleaned_data.get('email')
            password=form.cleaned_data.get('password1')
            user.set_password(password)
            user.save()
            messages.success(request, f'Account successfully created!')

            return redirect('login')


    else:
        form = UserRegisterForm()
    return render(request, 'registration/register.html', {'form': form})


    path('login/', auth_views.LoginView.as_view(template_name='registration/login.html',redirect_authenticated_user=True), name='login'),

# path('logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'),
path('register/', views.register, name='register'),


LOGIN_REDIRECT_URL = 'home:index'
LOGIN_URL = 'login'
LOGOUT_REDIRECT_URL = 'index'

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Ниже приведены некоторые варианты.попробуйте прочитать django doc https://docs.djangoproject.com/en/2.1/topics/auth/

Вариант 1

Это может быть одним из способов.Вы проверяете, вошел ли пользователь в систему, и возвращаете подходящую HTML-страницу.

views.py

def home(request):
  if not request.user.is_anonymous:
     return render("home.html")
  else:
     return render("login.html")

Опция 2

Проверьте, вошел ли пользователь, если это так, перенаправьте на конечную точку домашней страницы

    from django.shortcuts import render, HttpResponseRedirect
    from django.contrib.auth import login_required
    def login(request):
       if not request.user.is_anonymous:
           return HttpResponseRedirect('/home')

    @login_required
    def home(request):
       # Render you home page response
0 голосов
/ 23 апреля 2019

Вы можете redirect перейти на домашнюю страницу, даже если пользователь щелкнет ссылку login/signup.

Для этого вы можете сделать что-то в login и signup представлениях:

def login(request):
    # if the user is already logged in, redirect to user home page
    if request.user.is_authenticated:
        # redirect to the home page
    else:
        # do something like defining get or post method request conditions 

def signup(request):
    # if the user is already logged in, redirect to user home page
    if request.user.is_authenticated:
        # redirect to the home page
    else:
        # do something like defining get or post method request conditions

Это один из способов перенаправления logged in user на домашнюю страницу, даже если пользователь нажимает на ссылку входа / регистрации или пытается вернуться на страницу входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...