码迷,mamicode.com
首页 > 其他好文 > 详细

Django--用户认证组件

时间:2019-04-19 20:14:25      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:很多   函数   superuser   htm   setting   user   dir   use   直接   

用户认证组件简介

之前是把is_login=True放在session里来判断用户是否登录
之前的操作,在覆盖的时候有问题。
例如两个用户,第一个用户key-value多,第二个少覆盖可能会保留有第一个的


用session保存用户登录状态。使用组件

用户认证组件的前提:
功能:用session记录登录验证状态(不记录上次登录时间那些)
前提:不能用自己的用户表了。要用Django自带的auth_user用户组件认证表。
不妨碍扩展其他字段。可以做一对一,一对多等
创建超级用户:python manage.py createsuperuser
API
封装在auth模块中了:
from django.contrib import auth

def login(request):
user=request.POST.get("user")
pwd=request.POST.get("pwd")
#验证通过返回user对象,不通过返回None
user=auth.authenticate(username=user,password=pwd)
#PS:可以自己来吗?from django.contrib.auth.models import User
#不得行,因为密码是加了密的,没必要干重复的事
if user:
auth.login(request, user)
# 一旦注册session,把这个就变成了--
#在所有的视图函数和模板(模板里不用传都能用)都可以获取的request.user
#request.user表示当前登录对象 request.user==user
#没有登录是匿名对象,AnonymousUser,
#request.user.is_anonymous或request.user.id==None
#或request.user.user==‘‘或request.user.is_authenticated
#来判断用户是否登录

注册功能

def reg(request):
user=request.POST.get("user")
pwd=request.POST.get("pwd")
User.objects.create_user(username=user,password=pwd) #还有create_superuser方法,密码入库是加密的
#改密码
user = User.objects.get(username=‘‘)
user.set_password(password=‘abc‘)
user.save()

总结:
from django.contrib import auth
1.验证登录:user=auth.authenticate(username=user,password=pwd)
2.注册登录:user=auth.login(request, user)
3.注销:auth.logout(request)

4.是否已经登录:request.user.is_authenticated
5.添加用户:User.objects.create_user(username=user,password=pwd)

PS:
request.user是一个全局变量。可以在视图中使用,在模板中不用传参可以直接用
补充:
匿名用户对象:
request.user.is_anonymous==True
request.user.id==None
request.user.user==‘‘


认证装饰器:

比如很多视图函数都要“已经登录才能看”
可以用Django自带的装饰器解决@login_required
不认证跳转到LOGIN_URL="/index/"是自己在settings.py里配的
实际跳转到:127.0.0.1:8000/login/?next=/order/
所以在视图函数中:
登录成功应该重定向到return redirect(request.GET.get("next","/index/"))

@login_required
def order(request):
#if not request.user.is_authenticated:
# return redirect("/login/")

return render(request,"order.html")

 

Django--用户认证组件

标签:很多   函数   superuser   htm   setting   user   dir   use   直接   

原文地址:https://www.cnblogs.com/staff/p/10738088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!