簡體   English   中英

我想在 Django 中為普通用戶和管理員用戶使用不同的身份驗證系統?

[英]I want different authentication system for normal user and admin user in Django?

我創建了一個網站,其中有一個普通用戶和管理員。 他們都有不同的登錄系統。但問題是當用戶以用戶身份登錄時,他也登錄到管理頁面。 此外,當管理員登錄時,他也登錄到用戶頁面。

def userlogin(request):
    error = ""
    if request.method == 'POST':
        u = request.POST['emailid']
        p = request.POST['pwd']
        user = authenticate(username=u, password=p)
        try:
            if user:
                login(request, user)
                error = "no"
                return redirect(profile)
            else:
                error = "yes"
        except:
            error = "yes"
    return render(request, 'login.html', locals())



def login_admin(request):
    error = ""
    if request.method == 'POST':
        u = request.POST['uname']
        p = request.POST['pwd']
        user = authenticate(username=u, password=p)
        try:
            if user.is_staff:
                login(request, user)
                error = "no"
            else:
                error ="yes"
        except:
            error = "yes"
    return render(request,'login_admin.html', locals())

這個model用於普通用戶注冊

class Signup(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    contact = models.CharField(max_length=10)
    branch = models.CharField(max_length=30)
    role = models.CharField(max_length=15)
    username = models.CharField(max_length=15, unique=True)
    image = models.ImageField(upload_to="images/img", default="")
    upvotesuser = models.IntegerField(default=0)

我想為用戶和管理員實現不同的身份驗證系統。

在 SignUp model 中明確設置一些角色,如下所示,因為 Django 也提供了這一點:

  1. 行政
  2. 職員
  3. 簡單用戶/普通用戶

在 SignUp model 中定義每個用戶的角色。如果普通用戶登錄,它肯定會從 signUp model 中過濾掉,這將返回他/她作為普通/簡單用戶。

您不需要創建另一個 model 進行注冊 您可以輕松檢查當前用戶權限 Eg

  • is_admin
  • is_staff
  • is_superuser 然后根據權限重定向

暫無
暫無

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

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