Ofe*_*mon 22 login token logout django-rest-framework http-token-authentication
我已经根据django rest框架Docs实现了令牌认证.
从我读到的形式来看,DRF的令牌认证非常简单 - 每个用户一个令牌,令牌不会过期并且始终有效(我是对的吗?).
我知道有更好的做法,但是现在DRF令牌认证对我来说很好.
我的问题是 -使用普通DRF令牌身份验证注销的最佳做法是什么?
我的意思是,当用户注销时,我应该从客户端删除令牌吗?然后登录再次获取令牌?我应该删除令牌并生成一个新令牌吗?
有经验的人吗?
Clo*_*ans 30
这是我用来注销的简单视图:
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
class Logout(APIView):
def get(self, request, format=None):
# simply delete the token to force a login
request.user.auth_token.delete()
return Response(status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
然后将其添加到您的urls.py:
urlpatterns = [
...
url(r'^logout/', Logout.as_view()),
]
Run Code Online (Sandbox Code Playgroud)
托克认证的全部意图:
通常在身份验证服务中,存在与令牌关联的生命周期.在特定时间之后,令牌将过期.在这里,我们获得一个访问令牌,它具有服务器随之发送的到期时间.现在,客户端需要每次在请求标头中发送此令牌,以便服务器可以识别用户是谁.我们可以跟踪它何时到期,或者我们可以继续使用它,直到我们收到INVALID_TOKEN错误.在这种情况下,我们将不得不再次从服务器获取令牌.
access_token的生命周期独立于授予客户端访问权限的用户的登录会话.假设OAuth2没有用户登录或注销或会话的概念.令牌仅用于识别用户是否是他所说的人.
令牌对于用户和客户端是唯一的.您可以将其保存到cookie以启用类似记住我的内容,但在服务器上您不需要删除它.每当令牌到期时,客户端需要向服务器发送请求以再次获得令牌.
DRF令牌认证中的令牌到期:
目前,DRF令牌身份验证不支持此功能.您必须自己实现它或使用提供此功能的第三方软件包.它应该检查令牌到期并在令牌过期时引发异常.
要自己实现它,您可以从DRF令牌认证类继承并添加您的逻辑.
您甚至可以使用第三方软件包django-rest-framework-expiring-tokens.
一些参考文献:
1. 令牌认证REST风格的API:应令牌定期更换?
2. 如何注销我使用OAuth2登录Google的应用程序?
| 归档时间: |
|
| 查看次数: |
18779 次 |
| 最近记录: |