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)
     。。。。  
      
不用再配置裏更改了
相關文章
相關標籤/搜索