![](/img/trans.png)
[英]Django request.user become AnonymousUser after third party redirect
[英]In my Django portal after login to the portal my request.user is always giving the value AnonymousUser
def login(request):
if request.method == 'POST':
form = AuthForm(request.POST)
if form.is_valid():
userEmail = strip_html(form.cleaned_data['auth_email'])
userPassword = strip_html(form.cleaned_data['auth_password'])
try:
person = Auth.objects.get(auth_email=userEmail, auth_password=userPassword)
request.session['username'] = person.auth_name
return redirect("/crudapplication/show")
except:
page = 'login.html'
message = 'Username doesn\'t exist'
上面是一個小代碼片段。 這是我的登錄功能。所以我提供的用戶電子郵件和密碼的值存在於我的數據庫中。
因此,當我通過 print(request.user) 在控制台上打印該行時,它總是給出值 Anonymoususer。 登錄功能是我的登錄模塊的views.py的一部分
您正在以非常手動的方式進行身份驗證。 這可能導致的問題是 2:
使用框架 django 的目的不是必須從 0 開始工作,因此它使用了 django 擁有的工具。
對於這種情況,請使用 django 身份驗證系統:
https://docs.djangoproject.com/en/3.0/topics/auth/default/
以上是官方文檔,但是為了了解身份驗證如何在個人層面上工作,我從以下教程中得到了更多幫助:
https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Authentication
def login_user(request):
print(request.POST)
username = request.POST['username']
password = request.POST['password']
print(username)
print(password)
user = authenticate(request, username=username, password=password)
print(user)
if user is not None:
login(request, user)
return redirect("/crudapplication/show")
...
else:
# Return an 'invalid login' error message.
return render(request, 'login.html')
上面是我的 views.py 文件,下面是我的模板文件。
<form method="post" action="/authLogin/login/">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
現在一切正常..但我只想知道我在模板文件中使用的表單對象我將如何從我的 views.py 文件中傳遞這個對象?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.