django的⽤户验证及登录状态保持
⼀、⽤户验证功能
Django⾃带⽤户验证及登录功能,引⼊模块为:
ib.auth import authenticate
其中⽅法authenticate()的接收参数为:
def authenticate(request=None, **credentials):
传⼊参数:
user = authenticate(username=login_user, password=login_password)
authenticate⽅法⾃动在数据库中匹配、验证,但是不能实现邮箱登录的验证,需要对该⽅法重写,导⼊模块:
ib.auth.backends import ModelBackend
创建重写类:
class ChongxieAuthenticate(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user = (Q(username=username) | Q(email=username))
django前端模板if user.check_password(password):
return user
else:
return None
except Exception as e:
return None
如果⽤户名或邮箱、密码验证通过,则会将该对象传递给user,如果为通过,传回None
⼆、登录状态保持
Django⾃带的login()⽅法可实现⽤户登录状态的保持,引⼊模块:
ib.auth import login
如果登录验证通过,使⽤:
login(request, user)
使⽤该⽅法后,会在服务器端的session中⽣成_auth_user_id和_auth_user_backend两个键值,并发到客户端作为cookie,前端页⾯可通过{% if request.user.is_authenticated %}判断是否登录,来实现登录状态的保持功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论