django的最小令牌认证
nap-token-auth的Python项目详细描述
简单的基于令牌的身份验证。
概述
很多人都在谈论为restapi使用令牌身份验证……但这到底意味着什么呢?有什么好处呢?
令牌是加密签名的数据块。在本例中,它包含用户id、后端和发出时的时间戳。
这使您可以生成并向电话应用程序、服务等颁发令牌,而不必处理登录、密码、csrf等。
安装
添加到settings.middleware,在默认身份验证之后 中间件:
MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','nap_token.middleware.NapTokenMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','cloudselect.middleware.CORSDefeat',]
用法
当您想登录用户时,调用nap_token.get_auth_token(user),传递 从django.contrib.auth.authenticate返回的用户实例。
它将返回一个签名的、带时间戳的令牌。客户只需要把这个传进去 一个Authorization头,格式为'bearer{token},用于请求 充当那个用户。如果令牌不存在、过期或无效,requset.user 将返回到正常的基于会话的身份验证。
发行代币
作为一个快速和肮脏的例子,如何发行令牌,这里有一个方法 将为可以登录的用户颁发令牌:
fromdjango.httpimportHttpResponsefromdjango.contrib.auth.viewsimportLoginViewfromnap_tokenimportget_auth_tokenclassTokenView(LoginView):defform_valid(self,form):user=form.get_user()returnHttpResponse(get_auth_token(user))