Django組件之auth

1、什麼是Auth模塊

  Auth模塊是Django自帶的用戶認證模塊,默認使用 auth_user 表來存儲用戶數據。python

2、使用方法

1.建立超級用戶

  python3 manage.py createsuperuser數據庫

  輸入用戶名,郵箱(能夠不輸入),密碼,確認密碼(成功建立超級用戶,並在auth_user表中插入一條數據,由於密碼必須加密全部不能手動插入)django

2.驗證用戶

from django.contrib import auth
# 至關於在查詢:user=models.User.objects.filter(name=name,pwd=pwd).first()
user = auth.authenticate(request, username=name, password=pwd)  # 若是校驗經過,會返回一個user對象,經過判斷user對象,校驗是否驗證

3.登陸

auth.login(request,user)
# 其實就是在session中寫了一條數據

  一旦登陸成功,調了這個函數login(request,user),之後再視圖類,函數中的request對象中,就有一個user對象,就是當前登陸的用戶對象;若是沒有登陸,request.user=AnonymousUser是匿名用戶。session

4.註銷

auth.logout(request)
# 內部:調用了request.session.flush(),刪除了登陸狀態

5.登陸認證裝飾器

from django.contrib.auth.decorators import login_required
@login_required(redirect_field_name='awsl',login_url='/login/')  # 能夠局部配置# # redirect_field_name:修改?後面的key值,
# login_url:若是沒有登陸,跳轉到的頁面

# 能夠全局配置(在setting中)
# 全局的配置,若是沒有登陸,跳到這個路由
LOGIN_URL='/login/'

7.建立用戶

from django.contrib.auth.models import User 
# 建立超級用戶和普通用戶
# 不能用create,建立的密碼沒加密
# user=User.objects.create(username=name,password=pwd) 
# 建立超級用戶
user=User.objects.create_superuser(username=name,password=pwd)
# 建立普通用戶
user=User.objects.create_user(username=name,password=pwd)

8.校驗密碼

# 先拿到用戶(能夠是登陸用戶,能夠現查)
request.user.check_password(pwd)

9.修改密碼

user.set_password(pwd)
user.save()  # 必定要調用save(),不然是不保存的

10.檢驗驗證

  is_authenticated(),若是經過驗證,是true反之falseapp

11.其餘方法

  is_active:禁止登陸網站(用戶還存在,封號)
  is_staff:是否對網站有管理權限(能不能登陸admin) 函數

12.刪除用戶

  orm刪除網站

3、擴展默認的auth_user表

方法一:一對一和auth_user表作關聯

from django.contrib.auth.models import User
class UserDetail(models.Model):
    phone=models.CharField(max_length=32)
    # 一對一跟auth_user表作關聯
    # 若是是從外部引入的表模型,是不能加引號的
    # 若是加引號,只是在當前model找
    user=models.OneToOneField(to=User)

方法二:繼承AbstractUser

from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
    # username,password以前auth_user表裏的字段都有
    phone=models.CharField(max_length=32)
    sex=models.BooleanField()
# 在setting中配置,作數據庫遷移,之後就沒有auth_user這張表,認證組件用的就是UserInfo表 AUTH_USER_MODEL ='app01.UserInfo'
相關文章
相關標籤/搜索