栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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的绝对路径 (登陆成功后,会重定向到该路径).

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号