在从IFRAME重定向期间,Django登录丢失。

时间:2014-04-13 19:13:28

标签: django authentication login

出于设计原因,我有登录屏幕的IFRAME。 当用户登录时,我触发父级重定向到' / my_app / welcome /'使用redirect.html。 重定向用户没有登录后。我在视图中检查了request.user.username(对于' / my_app / welcome /') 但登录丢失了。请告知如何保持登录状态?

档案views.py:

def login(request, template_name):
username = password = ''

if request.POST:
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)

    request.user = user

    if user is not None:
        if user.is_active:

            return TemplateResponse(request, 'accounts/redirect.html', {'redirect_url':'/my_app/welcome/'})

return render_to_response(template_name, locals(),
    context_instance=RequestContext(request))

文件redirect.html:

<html>
    <head>
        <script>
            window.top.location.href = '{{ redirect_url }}';
        </script>
    </head>
    <body></body>
</html>

由于

2 个答案:

答案 0 :(得分:-1)

您需要添加

auth_login(request, user)
if user.is_active:

之后

from django.contrib.auth import login as auth_login

答案 1 :(得分:-2)

我不确定为什么你认为简单地将用户分配到request.user足以登录它们。它不是,因为它没有像设置会话cookie那样做。

正如the documentation所解释的那样,记录用户的正确方法是调用适当命名的login函数。您可能希望将您的视图函数称为不同的名称以避免名称混淆。