我使用Android应用程序前端和Django后端。但它没有自动登录。
from django.contrib.auth import login as auth_login
def login_app(request):
...
if request.user.is_authenticated():
...
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
auth_login(request, user)
...
return ...
当我两次打电话给这个功能时。它获得了一个匿名用户实例。
if request.user.is_authenticated():
我该如何做到可以是真的?
设置cookie?怎么样?
英语不好的借口。
答案 0 :(得分:0)
if request.user.is_authenticated():
主要:请求用户登录成功。例如,人们的cookie没有过时。
当auth_login
执行成功时,django将帮助您保存用户cookie和sesion。
例如: 在模板中:
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please <a href={% url 'login_url' %}>log in</a>.</p>
{% endif %}
在观点中:
def my_view(request):
if not request.user.is_authenticated():
return redirect('/login/')
在您的登录视图中:
def login_app(request):
...
if request.user.is_authenticated():
#tell user he has login successful,or redict other page
else:
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
auth_login(request, user)
#tell user he login successfull
更多信息doc
你的Android应用已经修改了http响应,它有cookie信息,请保存,下一个请求带来cookie。
django的doc非常++,请仔细阅读
英语不好的借口。