使用django的自己用户模块
-
建⽴model( from django.contrib.auth.models import AbstractUser )
-
settings指定模型类( AUTH_USER_MODEL )
-
迁移⽣成数据库(原来⽣成过这些表的,需要删除所有的表进⾏重新⽣成)
使用DRF-JWT来做登陆注册以及状态保持
-
pip install djangorestframework-jwt
配置seetings
-
INSTALLED_APPS
INSTALLED_APPS = [
'rest_framework.authtoken',
]
-
REST_FRAMEWORK
REST_FRAMEWORK = {
# 身份认证
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
# 全局配置JWT验证设置
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
}
-
JWT_AUTH
JWT_AUTH = {
'JWT_AUTH_HEADER_PREFIX': 'JWT',
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
'JWT_RESPONSE_PAYLOAD_HANDLER':
'jwtuserapp.views.jwt_response_payload_handler', # 重新login登录返回函数
}
写注册生成token的代码
-
使用django的用户模型类
-
密码要密文
-
生成token并返回到前端
登陆生成token的代码
-
url里导包,并指定url
-
view里写返回的数据有那些
-
seetings里配置并告知django
权限的分离
-
导包(from rest_framework.permissions import IsAuthenticated, AllowAny)
-
APIview里设置permission_classes
使用django的自己用户模块 建⽴model( from django.contrib.auth.models import AbstractUser ) settings指定模型类( AUTH_USER_MODEL ) 迁移⽣成数据库(原来⽣成过这些表的,需要删除所有的表进⾏重新⽣成) 使用DRF-JWT来做登陆注册以及状态保持 下载依赖 pip install djangorestframework-jwt 配置seetings
JWT
原理
playload
载荷就是存放有效信息的地方,这个里面可以配置一些参数已经我们需要进行加密的数据字典。一般情况下只需要存放我们的数据和设置一个过期时间就可以了 根据当前时间设置一分钟后过期
datetime.datetime.utcnow() + datetime.timedelta(minutes=1)
1.iss:
jwt
签发者
sub:
jwt
所面向的用户
aud: 接收
jwt
的一方
exp:
jwt
的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该
jwt
都
一、基于传统的 token 认证
基于传统的 token 认证流程:用户登录,服务端给返回的token,并将token保存在服务端,以后再来访问时,需要携带token,服务器获取token后,再去数据库中获取token来进行校验。
注册
DRF
应用
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP是无
状态
的协议,当我们通过帐号密码验证一个用户时,下一个request请求时就把刚刚的用户忘了。于是我们就无法确认该用户的情况,就要再验证一次。所以为了保证系统安全,我们就需要验证用户否处于登录
状态
。
前后端分离通过Restful API进行数据交互时,如何验证用户的登录信息及权限。在原来的项目中,使用的是最传统也是最简单的...
实现登录
状态
保持
的方法
方法一:cookie和session配合使用
首先,用户登录输入用户名和密码,浏览器发送post请求,服务器后台获取用户信息,查询数据库验证用户信息是否正确。如果验证通过,就会创建session来存储相关信息,并且生成一个cookie字符串,把sessionID放在cookie里面。然后返回给浏览器。
当用户下一次发起请求时,浏览器会自动携带cookie去请求服务器,服务器...
class UserSignupSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)
confirm_password = serializers.CharField(write_only=True)
code = serializers.CharField
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authent
pip install
django
django
-cors-headers
django
restframework
django
restframework-
jwt
项目配置信息
django
demo/settings.py