Django REST Framework支持多种身份验证方法,其中一种是基于Session的身份验证。使用基于Session的身份验证,您需要使用Web浏览器发送请求。在每个请求中,浏览器将自动在Cookie中发送Session ID,从而实现身份验证。
配置Session
首先,您需要在Django中启用Session。您可以通过将以下内容添加到您的Django设置文件中来启用Session:
代码语言:javascript复制# settings.py
INSTALLED_APPS = [
# ...
'django.contrib.sessions',
# ...
]
MIDDLEWARE = [
# ...
'django.contrib.sessions.middleware.SessionMiddleware',
# ...
]
基于Session的身份验证
一旦您已经启用了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。
配置Session过期时间
默认情况下,Django的Session会话将持续到浏览器关闭。您可以使用以下设置来控制Session会话的过期时间:
代码语言:javascript复制# 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会话将在浏览器关闭时自动过期。