python web Django框架自带的用户认证中间件

中间名:django.contrib.auth
所在位置:项目目录下的settings.py

在这里插入图片描述

注册用户(普通用户):

from django.contrib.auth.models import User #所在库
new_user = User.objects.create_user(username=username,password=password)
new_user.save()

注:调用自带中间件前,需先进行数据迁移,迁移完成后,会在数据库中生成多个中间件所需库,例:auth_user 库,为用于存放用户信息的库
数据迁移:python manage.py makemigrations
python manage.py migrate
项目目录中与manage.py同级,进入cmd使用
在这里插入图片描述
用户信息库如下,存放时会对密码字段会进行加密,为中间件方法实现,此不对其算法多做解释
在这里插入图片描述

登录:

 from django.contrib import auth
 user = auth.authenticate(username=username, password=password)
 auth.login(request, user)

auth.authenticate会对用户名及密码进行校验,并返回一个认证了的user对象
利用auth.login进行登录,可理解为注册cookie

注销用户(退出登录):

 auth.logout(request)

无返回值,作用为清除登录信息的cookie
一般在views视图使用后重定向至登录界面,如下:
在这里插入图片描述

修改密码:

user = User.objects.get(username=username)
ret  = user.check_password(oldpassword)  #检查密码是否正确
if ret:
        user.set_password(newpassword) #如果正确就给设置一个新密码
        user.save()  #保存

注:区分大小写 User 和 user
User.objects.get 用于获取对应用户名的对象
user.check_password 用于校验密码 (用户输入修改前密码及新密码,应对输入的旧密码进行校验)
user.set_password(newpassword) 为该用户设置一个新密码

用户认证:

user = request.user
获取cookie中的用户信息,访问页面时可用来校验用户是否登录
可在views视图中传参至html,结合html 中 {% if user.username %}
在用户非登录时不显示某些信息,或显示提示登录信息。
例:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
当页面必须用户登录才能查看时,可利用django为我们设计好的一个用于此种情况的装饰器:login_requierd()

@login_required
def my_view(request):
  ...

若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ’ (这个值可以在settings文件中通过LOGIN_URL进行修改)。并传递 当前访问url的绝对路径 (登陆成功后,会重定向到该路径).

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值