Django REST Framework支持多种身份验证方法,其中一种是基于Session的身份验证。使用基于Session的身份验证,您需要使用Web浏览器发送请求。在每个请求中,浏览器将自动在Cookie中发送Session ID,从而实现身份验证。
首先,您需要在Django中启用Session。您可以通过将以下内容添加到您的Django设置文件中来启用Session:
# settings.py
INSTALLED_APPS = [
# ...
'django.contrib.sessions',
# ...
]
MIDDLEWARE = [
# ...
'django.contrib.sessions.middleware.SessionMiddleware',
# ...
]一旦您已经启用了Session,就可以开始使用基于Session的身份验证了。您可以使用SessionAuthentication类来实现基于Session的身份验证。下面是一个示例:
from rest_framework.authentication import SessionAuthentication
from rest_framework.views import APIView
from rest_framework.response import Response
class ExampleView(APIView):
authentication_classes = [SessionAuthentication]
def get(self, request, format=None):
content = {
'user': str(request.user), # `django.contrib.auth.User` instance.
'auth': str(request.auth), # None
}
return Response(content)在上面的示例中,我们使用了SessionAuthentication类进行身份验证。在get()方法中,我们可以通过request.user属性来获取当前用户实例。由于Session身份验证不涉及令牌,因此request.auth属性为None。
默认情况下,Django的Session会话将持续到浏览器关闭。您可以使用以下设置来控制Session会话的过期时间:
# settings.py
SESSION_COOKIE_AGE = 86400 # 1 day in seconds
SESSION_EXPIRE_AT_BROWSER_CLOSE = False在上面的示例中,我们将Session会话的过期时间设置为1天。如果您将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,则Session会话将在浏览器关闭时自动过期。