django - 总结 - 用户认证组件

用户认证组件

 

 
 1 from django.contrib import auth
 2 
 3 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法
 4 user = auth.authenticate(username=user, password=pwd)
 5 
 6 
 7 让上边找到的user对象赋给request.user使其成为全局变量,方便之后调用
 8 给已认证的用户附加上seession id 等信息
 9 auth.login(request, user)  # request.user:当前登陆对象
10 
11 
12 from django.contrib.auth import logout
13 注销用户:删除session表对应的记录
14 logout(request)
User对象
用于检查用户是否已经登陆True/False(user/) user.is_authenticated user.is_amonymous  # 是不是匿名用户 若是没有登陆,跳转到登陆界面,登录成功在跳转回来 一、自定义 def my_view(request): if not request.user.is_authenticated: return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path)) 二、django内置 from django.contrib.auth.decorators import login_required @login_required def my_view(request): ... 咱们须要配置登陆界面路径LOGIN_URL="/login/"
auth_user表操做
 1 from django.contrib.auth.models import User
 2 -------------建立新用户-------------------
 3 user = User.objects.create_user(username='',password='',email='' 4 User.objects.create_superuser()
 5 ---------------------检查密码正误-----
 6 用户须要修改密码的时候 首先要让他输入原来的密码 ,若是给定的字符串经过了密码检查,返回 True
 7 print("raw_pwd", user.check_password(pwd))
8 -------------------------修改密码--------
9
user = User.objects.get(username='')
10 user.set_password(password='')
11 user.save 



 1 def sign_up(request):
 2  
 3     state = None
 4     if request.method == 'POST':
 5  
 6         password = request.POST.get('password', '')
 7         repeat_password = request.POST.get('repeat_password', '')
 8         email=request.POST.get('email', '')
 9         username = request.POST.get('username', '')
10         if User.objects.filter(username=username):
11                 state = 'user_exist'
12         else:
13                 new_user = User.objects.create_user(username=username, password=password,email=email)
14                 new_user.save()
15  
16                 return redirect('/book/')
17     content = {
18         'state': state,
19         'user': None,
20     }
21     return render(request, 'sign_up.html', content) 
注册:
 1 @login_required
 2 def set_password(request):
 3     user = request.user
 4     state = None
 5     if request.method == 'POST':
 6         old_password = request.POST.get('old_password', '')
 7         new_password = request.POST.get('new_password', '')
 8         repeat_password = request.POST.get('repeat_password', '')
 9         if user.check_password(old_password):
10             if not new_password:
11                 state = 'empty'
12             elif new_password != repeat_password:
13                 state = 'repeat_error'
14             else:
15                 user.set_password(new_password)
16                 user.save()
17                 return redirect("/log_in/")
18         else:
19             state = 'password_error'
20     content = {
21         'user': user,
22         'state': state,
23     }
24     return render(request, 'set_password.html', content)
修改密码:




扩展auth表
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    tel = models.CharField(max_length=32)


在setting配置AUTH_USER_MODEL = "app01.UserInfo"

 

from django.contrib.auth.models import User


class UserInfo(User):
    tel = models.CharField(max_length=32)
   class Meta:
     super(User.Meta)
     。。。。  
      
不用再配置里更改了
相关文章
相关标签/搜索