采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,我想实现一个基于Django的rest-framework实现用户登录的一个api,用的是自建的用户表而不是使用微信的openID,能介绍以下如何设计这个api的思路吗? 还有如何实现保持用户登陆的状态??? 本人小白,自己在看官方文档的时候也理不太清具体的思路,还望老师能指点一下
首先整理一些业务逻辑,可参考课程相关的内容,大致有:登录、注销、过期重新登录这个几个阶段。如果是自建用户表,那还包括注册的阶段,注册的阶段也非常重要。
注册阶段需要完成以下逻辑。
用户名判重
用户信息传输
密码加密
登录阶段需要完成以下逻辑。
用户名、密码校验
登录态保存
注销、过期重新登录阶段和课程内容相似,不做展开。
接着设计相关API,以下使用POST方法
注册:/apiv/v1/register
登录:/api/v1/login
注销:/api/v1/logout
最后重点说明登录的过程,我们使用DRF框架的Token模块完成登录过程。
预登录态:获取用户的用户名和密码,构建POST数据,如:
username: myusername
password: mypassword
前端请求:通过API将POST数据发送到后台:django-rest-framework
后端处理请求:
将前端传递过来的用户数据校验是否合法,如果合法,将其构建成Django框架里面的User对象,User的路径如下,自行传递参数进行构建即可。
from django.contrib.auth.models import User
将生成的user实例使用Token模块生成唯一Token
token = Token.objects.get_or_create(user=user)
生成的Token长这个样子的:{ 'token' : '9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b' }
将token和相关登录的数据返回,如:
{ "token": "xxx", "username": "xxx"}
前端受到后端返回的结果,需要将返回的token存储起来,在下次请求时,构建如下的Header(这个Header的Key是指定的哦,不能更改,否则Token模块无法识别)
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
后端在接收到包含Autuorization的Header的请求的时候,就会自动转化为相应的user,可通过request.user来获取到这个用户。
这样就完成用户登录的整一个过程了,其实和课程第四章的内容也非常类似,在DRF框架里面,如果使用Token模块鉴权,关键是用户转化为Token的过程。可以根据以上流程细化每一个部分的实现,就能完成相关功能啦。
希望对同学有所帮助哦。
非常感谢!
这个问题有点大,我周末有时间整理一下哈
好的,老师
请问这个方法是不是就代表用django自带的用户管理?
这是Django Rest Framework框架的相关内容,作为拓展可以了解一下。
登录后可查看更多问答,登录/注册
0到1完整项目实战过程,是难得的Django+小程序全栈项目体验。
1.3k 7
1.2k 23
2.1k 21
1.2k 14
1.2k 12