簡體   English   中英

Django:手動創建 session cookie 並稍后使用它進行身份驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM