一、Auth模块的使用
1、Auth模块是Django自带的用户认证模块:
开发一个网站无可避免的需要设计实现网站的用户系统。需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。
Django内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。
2、创建后台管理员
前提是迁移过数据库,有auth_user 表。注意python得版本
/usr/bin/python3 manage.py createsuperuser
二、Auth模块的认证和登录
1、views
auth.authenticate 验证用户名和密码 和 auth.login 自动登录保存会话状态
def login(request): if request.method == 'POST': # 接收前端传过来的数据 username = request.POST.get('username') password = request.POST.get('password') # 第二步验证用户名和面是否正确 # 1. 我们去哪个表中查询数据 2. 使用这张表中的哪个字段来比较 # 验证用户名和密码 user_obj = auth.authenticate(request, username=username, password=password) print(user_obj) # None print(user_obj) # root 管理员登录成功之后的用户对象 """ 注意事项:传递参数的时候,用户名和密码必须同时传入 """ #########################要么全部使用auth模块的方法,要么全部自己写,,一定别混合使用 if user_obj: # 验证成功,执行下面的代码 auth.login(request, user_obj) ### 只要写了auth.login,那么就可以在全局任何有request对象第地方通过request.user拿到用户的对象 return redirect('/admin/') return render(request, 'login.html')
auth.login() 会自动登录保存session状态
浏览器查看session
数据库查看session
2、login_required装饰器和 request.user.is_authenticated 方法
from django.contrib.auth.decorators import login_required # # http://127.0.0.1:8000/accounts/login/?next=/order/ # # @login_required # :http://127.0.0.1:8000/accounts/login/?next=/order/ # ''' # 当局部和全局(setting.py中)都存在的时候,按局部的 # 如果局部没有,按照全局的 # ''' @login_required(login_url='/login/') # 没有登录的话跳转到指定的页面 def order(request): # 验证用户是否已经登录 print(request.user.is_authenticated) # True False # if request.user.is_authenticated: # # 处理登陆之后的逻辑 # pass # else: # pass # 没有登录,跳转登录页面 return HttpResponse("order")
使用装饰器login_required,如果没有登录,跳转到登录页面
删除session,访问order页面失败,说明auth.login自动处理了session。
三、Auth模块之退出系统
1、
2、
四、Auth模块之修改密码功能
1、
2、
3、
五、Auth模块之注册功能
1、
2、
3、
六、扩展默认的auth_user表
1、
2、
3、
标签:登录,request,auth,Django,Auth,模块,login,user From: https://www.cnblogs.com/dgp-zjz/p/17623719.html