能不能把用户表和管理员表分成两个的问题^^

来源: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回答

bobby

2019-11-24

其实是这样的,你这里提到的管理员表和用户表是从业务角度出发的,但是对于系统来说不管你的用户怎么分,哪怕有十种用户,每种用户信息都不一样也没有关系,因为对于他们来说都会对应一个账户,这个账户我们叫用户,不过这个用户的概念是针对系统而言,这些用户都有共同的信息: 用户名,密码,手机号码等,所以不管有多少种用户这些共同的信息可以抽象成一张表,然后这十张表有一个onetoonefiled指向这个user表的外键,每种用户不同的信息可以单独的定义在自己的表中,这样所有的用户登录就可以走统一的user表了啊

0
10
慕粉3235508
回复
bobby
https://coding.imooc.com/learn/questiondetail/154233.html
2019-11-28
共10条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2872 学习 · 2457 问题

查看课程