DJANGO ВСЕ AUTHEMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL - PullRequest
1 голос
/ 21 февраля 2020

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

ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/profile' 
LOGIN_REDIRECT_URL = '/'

Но когда я включаю вход в систему, AUTHENTICATED REDIRECT переходит на LOGIN_REDIRECT, но когда Я отключаю Вход, он идет по маршруту EMAIL_CONFIRMATION_REDIRECT.

Когда я пытаюсь распечатать настройки адаптера для email_confirmation URL-адреса перенаправления ниже, он показывает только LOGIN_REDIRECT

def get_email_confirmation_redirect_url(self, request): 
    """ The URL to return to after successful e-mail confirmation. """ 

    if request.user.is_authenticated: 
     if app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL: 
       return \ 
       app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL 
     else: 
      return self.get_login_redirect_url(request) 
    else: 
     return app_settings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL

Я пытался переопределение этого get_email_confirmation_redirect_url в адаптере, но все равно не будет работать. Он не выбирает REDIRECT до того, как я войду в систему и произведу повторную проверку.

1 Ответ

0 голосов
/ 25 февраля 2020

Поскольку ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/profile' не работал, если пользователь не вошел в систему, я решил переопределить DefaultAccountAdapter в Django Аллах. Мой логин состоял в том, что если время, в которое пользователь присоединился к приложению, и время входа в систему превышает определенный порог, то перенаправление будет другим. Поэтому я создал адаптер в своем приложении для пользователей, как показано ниже:

class AccountAdapter(DefaultAccountAdapter):

  def get_login_redirect_url(self, request):
    expiry = 90 #seconds

    assert request.user.is_authenticated
    if (request.user.last_login - request.user.date_joined).seconds < expiry:
        url = 'profile/'
    else:
        url = settings.LOGIN_REDIRECT_URL
    return resolve_url(url)

Затем я передал этот адаптер в мои settings.py

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