[英]Django: Create manualy session cookie and authenticate later with it
我正在使用帶有令牌身份驗證的 Django-Rest-Framework。 在我的 Android 應用程序中,我想打開一個 webview 並從需要身份驗證的視圖中顯示一些內容。
因此,我編寫了一個 rest 調用來獲取 session id。
/rest/getsessionid/ => 看起來像這樣:
from django.contrib.sessions.backends.db import SessionStore
class GetSessionKeyView(APIView):
def get(self, request, format=None):
if request.user.is_authenticated:
s = SessionStore()
s.create()
return Response({'sessionid': s.session_key})
return Response({'notauthenicated': True})
不幸的是,返回的 sessionid 不起作用。 為什么?
我終於找到了辦法。
class GetSessionKeyView(APIView):
def get(self, request, format=None):
if request.user.is_authenticated:
if 'HTTP_COOKIE' not in request.META or request.META['HTTP_COOKIE'] == '':
login(request, request.user, backend='django.contrib.auth.backends.ModelBackend')
return Response({
'sessionid': request.session.session_key
})
else:
return Response({'ERROR': 'Cookies not allowed'})
return Response({'notauthenicated': True})
您必須先再次登錄才能創建 session。
編輯:不要忘記阻止 cookies 以保護它免受 CSRF 攻擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.