Tôi đang sử dụng Django-allauth cho thông tin đăng nhập/đăng ký có liên quan của mình, vì vậy khi người dùng đăng ký (lần đầu tiên) vào trang web của tôi, tôi chuyển hướng anh ấy đến trang /thanks/
bằng cách định nghĩa dưới đây thiết lập trong settings.py
tập tinChuyển hướng người dùng đến một url khác với tín hiệu đăng nhập django-allauth
LOGIN_REDIRECT_URL = '/ nhờ /'
Nhưng khi người dùng cố gắng đăng nhập cho lần tiếp theo (nếu đã đăng ký) tôi nên chuyển hướng anh '/dashboard/'
URL
Vì vậy, cố gắng thay đổi điều đó với Django-allauth signals
như dưới đây không hoạt động g ở tất cả
@receiver(allauth.account.signals.user_logged_in)
def registered_user_login(sender, **kwargs):
instance = User.objects.get_by_natural_key(kwargs['user'])
print instance.last_login==instance.date_joined,"??????????????????????????????"
if not instance.last_login==instance.date_joined:
return HttpResponseRedirect(reverse('dashboard'))
Vì vậy, bất cứ ai có thể vui lòng cho tôi biết làm thế nào để chuyển hướng người dùng đến /dashboard/
cho lần đăng nhập bình thường, tôi đang làm điều gì sai trái trong các mã tín hiệu trên?
Sửa
Sau một vài sửa đổi theo câu trả lời dưới đây bởi pennersr
, lớp AccountAdapter
của tôi trông giống như dưới đây
from allauth.account.adapter import DefaultAccountAdapter
# from django.contrib.auth.models import User
class AccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
if request.user.last_login == request.user.date_joined:
return '/registration/success/'
else:
return '/dashboard/'
Nhưng vẫn còn, nó được chuyển hướng người dùng đến /dashboard/
, logic của tôi trong việc xác định lần đầu tiên người dùng sai?
Cảm ơn pennersr, tôi đã chỉnh sửa anser của mình ở trên, bạn có thể giúp tôi với điều đó không? –
Ngoài ra, chúng tôi có thể cung cấp cho người dùng tùy chọn gửi lại email xác nhận không? nếu không được xác nhận khi anh ấy đã đăng ký? –
Bạn đã thử kiểm tra các giá trị của last_login/date_joined chưa? Gửi lại email xác nhận diễn ra tự động, ngay khi người dùng cố đăng nhập bằng e-mail chưa được xác minh.Lưu ý rằng để ngăn chặn các cuộc tấn công bằng thư, thao tác này chỉ khởi động khi nỗ lực đăng nhập cách nhau 3 phút. – pennersr