Django-регистрация: Запрещение авторизованным (аутентифицированным) доступа к результатам регистрации на странице регистрации, запрещенной для всех пользователей. - PullRequest
1 голос
/ 05 апреля 2019

Привет всем, В настоящее время я использую Django-registration-redux для проекта Django

В моей попытке запретить пользователю, прошедшему проверку, доступ к странице регистрации и странице входа в систему, мне нужно было внести несколько изменений в views.py , обслуживающий эти 2 страницы. Я использовал

if self.request.user.is_authenticated: return redirect('mainhomepage')

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

Предоставленное решение сработало, но оно также не позволяет незарегистрированному пользователю получить доступ к странице регистрации

Вот views.py для страницы регистрации

class RegistrationView(_RequestPassingFormView):
"""
Base class for user registration views.

"""
disallowed_url = 'registration_disallowed'
form_class = REGISTRATION_FORM
http_method_names = ['get', 'post', 'head', 'options', 'trace']
success_url = None
template_name = 'registration/registration_form.html'

@method_decorator(sensitive_post_parameters('password1', 'password2'))
def dispatch(self, request, *args, **kwargs):
    """
    Check that user signup is allowed before even bothering to
    dispatch or do other processing.

    """
    if self.request.user.is_authenticated:
        return redirect('mainhomepage')
    if not self.registration_allowed(request):
        return redirect(self.disallowed_url)
    return super(RegistrationView, self).dispatch(request, *args, **kwargs)

def form_valid(self, request, form):
    new_user = self.register(request, form)
    success_url = self.get_success_url(request, new_user)

    # success_url may be a simple string, or a tuple providing the
    # full argument set for redirect(). Attempting to unpack it
    # tells us which one it is.
    try:
        to, args, kwargs = success_url
        return redirect(to, *args, **kwargs)
    except ValueError:
        return redirect(success_url)

def registration_allowed(self, request):
    """
    Override this to enable/disable user registration, either
    globally or on a per-request basis.

    """
    return True

def register(self, request, form):
    """
    Implement user-registration logic here. Access to both the
    request and the full cleaned_data of the registration form is
    available here.

    """
    raise NotImplementedError

Как видите: я добавил

if self.request.user.is_authenticated:
        return redirect('mainhomepage')

, чтобы только перенаправленные пользователи могли перенаправляться на главную страницу url

Однако и аутентифицированные, и не аутентифицированные автоматически направляются на эту страницу

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

В КОРОТКОМ, я больше не могу получить доступ к странице регистрации, когда я ВЫХОДИЛ ИЗ ВЫХОДА, потому что независимо от статуса входа в систему, пользователь перенаправляется на домашнюю страницу. Тем самым делая невозможной новую регистрацию на странице ... ЛЮБОЙ ПОМОЩЬ ПОЖАЛУЙСТА ??

...