能不能把用户表和管理员表分成两个的问题^^
来源:7-6 json web token方式完成用户认证
慕粉3235508
2019-11-23
@Bobby 老师
就是管理员是一个表,继承AbstractUser, 用户是一个表继承Model,auth_user_model写的是管理员的表,JWT登录验证也是管理员表,如何为用户表写一个登录接口呢?
您之前回答过一个类似的问题,说是 “ 新建一张客户表,然后这个表中有一个onetoonefiled指向一个user记录就行了 ”,
首先这两个表内容是不一样的啊,一个是管理员,一个是注册用户,onetoonefield指向另一个表的记录是什么情况啊,您能否详细讲解啊,
另外除了这个方式之外还有没有别的方式了,可不可以也为用户写一个登录接口呢,如果可以,直接这样写行吗
urls.py
# jwt的认证接口
# 管理员的认证接口
path('login/', obtain_jwt_token),
# 注册用户的认证接口
path('userlogin/', obtain_jwt_token)
他俩用的是一个,虽然说他俩用的是一个,并且auth_user_model指向的是管理员的,但是我在
views.py
class CustomBackend(ModelBackend):
# 注册用户验证
def authenticate(self, request, username=None, password=None, **kwargs):
try:
custom= Custom.objects.get(Q(username=username) | Q(phone=username))
if patient.check_password(password):
return custom
except Exception as e:
return None
class AdminBackend(ModelBackend):
# 管理员验证
def authenticate(self, request, username=None, password=None, **kwargs):
try:
admin= Admin.objects.get(Q(username=username) | Q(phone=username))
if patient.check_password(password):
return admin
except Exception as e:
return None
中是这样写的,
settings.py
AUTH_USER_MODEL = 'users.PatientProfile'
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend','users.views.AdminBackend',
)
这样写可以吗,
还是需要重写一个接口,
写回答
1回答
-
其实是这样的,你这里提到的管理员表和用户表是从业务角度出发的,但是对于系统来说不管你的用户怎么分,哪怕有十种用户,每种用户信息都不一样也没有关系,因为对于他们来说都会对应一个账户,这个账户我们叫用户,不过这个用户的概念是针对系统而言,这些用户都有共同的信息: 用户名,密码,手机号码等,所以不管有多少种用户这些共同的信息可以抽象成一张表,然后这十张表有一个onetoonefiled指向这个user表的外键,每种用户不同的信息可以单独的定义在自己的表中,这样所有的用户登录就可以走统一的user表了啊
0102019-11-28
Python前后端分离开发Vue+Django REST framework实战
Django REST framework课程视频,RESTFul API前后端分离开发
2872 学习 · 2457 问题
相似问题