簡體   English   中英

如何在 Django 中啟用非超級用戶從前端登錄?

[英]How to enable non-superusers login from front end in Django?

我為登錄創建了一個視圖,但 Django 僅對超級用戶進行身份驗證。 非超級用戶無法登錄。我只希望非超級用戶從前端登錄

def logingin(request):
    if request.method == 'POST':
        username = request.POST.get('username','')
        password = request.POST.get('password','')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/')
        else:
            return redirect('/signup')

    return render(request, 'login.html')

誰能告訴我我需要在我的代碼中做哪些修改?

您沒有向我們展示您如何創建新用戶(無法登錄的用戶)。

您可以 go 到管理面板並檢查您的密碼是否正確散列: 查看密碼是否正確散列

如果不是,您將看到一條消息:

"django Invalid password format or unknown hashing algorithm"

默認情況下,保存表單不會正確地輸入您的密碼。 要正確創建用戶,請執行以下操作:

user = form.save(commmit=False)
user.set_password(user.password)
user.save()

那你就好了:)

您的非超級用戶的is_active標志必須設置為 false

https://docs.djangoproject.com/en/2.2/ref/contrib/auth/#django.contrib.auth.models.User.is_active

下面是摘錄

這不一定控制用戶是否可以登錄。身份驗證后端不需要檢查 is_active 標志,但默認后端 (ModelBackend) 和 RemoteUserBackend 可以。 如果要允許非活動用戶登錄,可以使用 AllowAllUsersModelBackend 或 AllowAllUsersRemoteUserBackend。 在這種情況下,您還需要自定義 LoginView 使用的 AuthenticationForm,因為它拒絕非活動用戶。 請注意,諸如 has_perm() 之類的權限檢查方法和 Django 管理員中的身份驗證對於非活動用戶都返回 False。

https://stackoverflow.com/a/18209379/3053228

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM