小编Akh*_*mar的帖子

如何防止用户在已经登录时访问 django 中的登录页面?

在我的 Django 应用程序中,用户即使在登录后也可以通过 URL 访问登录/注册页面。如何防止他们访问这些页面?

网址.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'),
]
Run Code Online (Sandbox Code Playgroud)

虽然我可以在views.py 中编写if-else 语句来检查经过身份验证的用户,但我没有在 views.py 中使用任何登录功能。我正在使用 django 的默认登录系统和一个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 …
Run Code Online (Sandbox Code Playgroud)

python django django-login

13
推荐指数
1
解决办法
4766
查看次数

标签 统计

django ×1

django-login ×1

python ×1