昨天做了注册的API,想当然,有注册就有登入登出,不然要注册要干嘛XD
所以今天要来做的是登入、登出API的部分,这边首先还是一样,来到我们的views,要来撰写我们登入、登出的主要逻辑,先来看到我们登入的部分~~~
from datetime import datetime
import json
import uuid
from django.contrib.auth.models import User
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_protect
from user.models import UserProfile
from django.contrib import auth #新增
from django.contrib.sessions.models import Session#新增
@csrf_protect
def login(request): #登入
if request.method == "POST":
data = json.loads(bytes.decode(request.body,"utf-8"))
try:
account = data['account']
password = data['password']
auth_obj = auth.authenticate(username=account,password=password)#验证帐号对错
if auth_obj is not None: #验证成功
if request.user.is_authenticated == False:#验证是否有帐号已登入/新增开始
auth_obj.check_password(password) #检查输入与验证返回user对象密码是否相符
request.session.create()
auth.login(request,auth_obj)
message = {"status": "登入成功"}
else:
message = {"status":"帐号已登入"}
else:
message = {"status":"帐号密码输入错误"}
except :
message = {"status": "登入失败"}
return JsonResponse(message)
简单说明一下我的想法以及function的功能,我主要是先判断帐号验证是否有成功,而且是要使用者在未验证的状态下,才会登入,登入之後使用者状态才会变成已验证,但是如果帐号正确,可是使用者已验证会显示已登入。
auth.authenticate(username=account,password=password)
:主要功能是验证帐号、密码是否正确,如果正确,则会返回相对应对象的资料,如果不正确,则会返回None。request.user.is_authenticated
:判断帐户是否通过验证。auth_obj.check_password
:检查输入与验证返回user对象密码是否相符。request.session.create
:创建session,如果忘记甚麽是session的夥伴,可以回到Day13、14复习一下唷~~~auth.login
:将一个已验证的帐户附在session上。@csrf_protect
def logout(request): #登出
try:
auth.logout(request)
message = {"status":"登出成功"}
except:
message = {"status":"登出失败"}
return JsonResponse(message)
登出,就不多解释啦XD,只有一行程序就是登出~~
这里有官方文件,关於login、logout、authenticated的用法说明
今天把逻辑都写完了~~ 明天就可以开始设定登入、登出的urls啦~~~
<<: Day 19 : 案例分享(6.2) 人事、差勤与薪资 - 组织架构、人事资料及个人合同管理
>>: 2021-Day29. Serverless(十 七):Deploy Ktor To Azure
其实我根本不知道色情守门员的原理是什麽,也不想知道 (怨念很深) 这个程序没有那麽神通广大,不能自动...
废话不多说,直接附上code 影片含有程序码详细解说,若有误再烦请告知,谢谢 library(plm...
「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...
今天就继续来做剩下的两个地区吧! 一样先在assets资料夹内的View资料夹里建立南部和东部的资料...
何谓DOM? DOM = Document Object Model(文件物件模型) 根据MDN表示...