Admin用户是同一个Django用户-如何解决这个问题

4xrmg8kj  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(111)

当我建立我的电子商务页面时,我注意到如果我用用户1登录,当我用用户2无管理员登录时,我的django页面会自动用用户2登录。我不想发生这种事我想继续使用用户1在django站点上,即使在admin中使用用户2登录。这怎么解决?有人能帮帮我吗
在我的views.py:

def login_request(request):
if request.method == "POST":
    form = AuthenticationForm(request, data=request.POST)
    if form.is_valid():
        username = form.cleaned_data.get('username')
        password = form.cleaned_data.get('password')
        user = authenticate(username=username, password=password)       
        if user is not None:  
            login(request, user)
            return redirect("store:index")
    elif not form.is_valid() and form.cleaned_data.get('username')!=None or form.cleaned_data.get('password')!=None:
        messages.error(request,"Invalid username or password.")
    elif form.cleaned_data.get('username')==None and form.cleaned_data.get('password')==None:
        messages.error(request,"Please, enter your username and password.")
form =  AuthenticationForm()
return render(request=request, template_name="login//login.html", context={"login_form":form})
cwtwac6a

cwtwac6a1#

如果用户已经登录,您可以将其重定向到您的主页。这样用户就不能在浏览器中被覆盖。
您可以使用中间件来实现这一点。
样本代码:

class AuthRequiredMiddleware(object):
    def process_request(self, request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect(reverse('index')) # or http response
        return None

MIDDLEWARE_CLASSES = (
    ...
    'path.to.your.AuthRequiredMiddleware',
)

相关问题