Django项目实战-----实现登录验证、多用户登录和退出逻辑
目录登录逻辑登录逻辑图解用户登录逻辑流程登录逻辑视图内代码多用户登录(判断是用手机号登录还是用户名登录)退出逻辑退出逻辑流程退出登录视图内代码登录逻辑登录逻辑图解用户登录逻辑流程提取前端的数据① 用户输入的用户名② 用户输入的密码③用户是否勾选记住密码验证参数① 判断参数是否全部都有② 验证用户用户名和密码是否正确保持登录状态处理记住密码① 如果勾选了记住密码就设置session有效期,看需求要记
·
登录逻辑
登录逻辑图解

用户登录逻辑流程
- 提取前端的数据
① 用户输入的用户名
② 用户输入的密码
③用户是否勾选记住密码- 验证参数
① 判断参数是否全部都有
② 验证用户用户名和密码是否正确- 保持登录状态
- 处理记住密码
① 如果勾选了记住密码就设置session有效期,看需求要记住多长时间
② 如果没有勾选就设置session有效期为0,关闭浏览器就会自动删除session- 前端通过cookie获取用户名来显示在页面,把用户的用户名存入cookie
登录逻辑视图内代码
不要忘记注册路由
多用户登录(判断是用手机号登录还是用户名登录)
手机号登录
authenticate方法Django自带的验证用户名密码根据User.USERNAME_FIELD来对比用户名还是手机号登录
user = authenticate(username=用户名,password=密码)
设置cookie让前端页面获取用户名代入到模板
class LoginView(View):
def post(self, request):
user_dict = json.loads(request.body)
username = user_dict.get('username')
password = user_dict.get('password')
remembered = user_dict.get('remembered')
if not all([username, password, remembered]):
return JsonResponse({'code': 400, 'errmsg': '缺少参数'})
# 如果用户输入的是手机号把User.USERNAME_FIELD改为手机号验证
if re.match('1[3-9]\d{9}', username):
User.USERNAME_FIELD = 'mobile'
else:
User.USERNAME_FIELD = 'username'
user = authenticate(username=username, password=password)
if not user:
return JsonResponse({'code': 400, 'errmsg': '用户名或密码错误'})
login(request, user)
if remembered:
request.session.set_expiry(None)
else:
request.session.set_expiry(0)
ret = JsonResponse({'code': 0, 'errmsg': 'ok'})
ret.set_cookie('username', user.username, max_age=3600 * 24 * 5)
return ret
测试
退出逻辑
退出逻辑流程
- logout(request)方法删除cookie中的sessionid来退出用户的登录状态
- 删除cookie中的用户名让前端页面改为注册登录
- 返回json成功与否
退出登录视图内代码
Django自带的logout方法 参数为request
Response对象的delete_cookie('key')方法根据key删除cookie
class LogoutView(View):
def delete(self, request):
logout(request)
ret = JsonResponse({'code': 0, 'errmsg': 'ok'})
ret.delete_cookie('username')
return ret
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)