django - 身份验证:用户变成" admin"用户在进行后续观看时

时间:2017-05-16 12:10:32

标签: django authentication

所以基本上我的问题是这个,在我用dajngo内置系统验证用户之后,用户切换到用户" admin"而不是让以前的用户保持在会话中。代码:

from django.contrib.auth import authenticate
from django.contrib.auth.decorators import login_required
def new_login_view(request):

   if request.method == 'POST':
        data = dict(request.POST)
        data.pop('csrfmiddlewaretoken')

        id_client = data['lg_username'][0]
        pass_client = data['lg_password'][0]

        user = authenticate(username=id_client, password=pass_client)

        if user is not None:
            # A backend authenticated the credentials
            ...
            return render(request, 'initial_page.html', dictionary_with_info)

当我在initial_page.html并激活视图时,即:

@login_required
def home(request):
    if request.method == 'POST':
        ...

当我致电request.user时,我得到:User: admin而不是之前的用户。

任何想法为什么?

1 个答案:

答案 0 :(得分:2)

您只是在验证用户身份。您尚未调用login()来实际登录用户。

from django.contrib.auth import authenticate, login

def new_login_view(request):

    if request.method == 'POST':
        ...
        user = authenticate(username=id_client, password=pass_client)
        if user is not None:
            login(request, user)
            # Redirect to a success page.

有关详细信息,请参阅how to log a user in上的文档。

请注意,Django附带内置authentication views。我建议您使用提供的登录视图,而不是自己编写。