Как запретить пользователю доступ к странице входа в Django, когда уже вошли в систему? - PullRequest
1 голос
/ 08 марта 2019

В моем приложении django пользователь может получить доступ к страницам входа / регистрации через URL даже после входа в систему.Как запретить им доступ к этим страницам?

urls.py

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

app_name = 'account'

urlpatterns = [
  path('signup/', views.register, name='register'),
  path('', auth_views.LoginView.as_view(), name='login'),
]

Хотя я могу написать оператор if-else для проверки подлинностипользователи в views.py , но я не использовал ни одной функции для входа в views.py.Я использую sjyeo по умолчанию для входа в систему django и страницу authentication.py для пользовательского входа (аутентификация по адресу электронной почты).

authentication.py

from django.contrib.auth.models import User

class EmailAuthBackend(object):
    """
    Authenticate using an e-mail address.
    """
    def authenticate(self, request, username=None, password=None):
        try:
            user = User.objects.get(email=username)
            if user.check_password(password):
                return user
            return None
        except User.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

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

1 Ответ

1 голос
/ 08 марта 2019

Вы можете перенаправить пользователей, изменив файл urls.py, как показано ниже:

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

app_name = 'account'

urlpatterns = [
  path('signup/', views.register, name='register'),
  path('', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
]

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

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