Auth模塊是Django自帶的用戶認證模塊,默認使用 auth_user 表來存儲用戶數據。python
python3 manage.py createsuperuser數據庫
輸入用戶名,郵箱(能夠不輸入),密碼,確認密碼(成功建立超級用戶,並在auth_user表中插入一條數據,由於密碼必須加密全部不能手動插入)django
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對象,校驗是否驗證
auth.login(request,user) # 其實就是在session中寫了一條數據
一旦登陸成功,調了這個函數login(request,user),之後再視圖類,函數中的request對象中,就有一個user對象,就是當前登陸的用戶對象;若是沒有登陸,request.user=AnonymousUser是匿名用戶。session
auth.logout(request) # 內部:調用了request.session.flush(),刪除了登陸狀態
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/'
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)
# 先拿到用戶(能夠是登陸用戶,能夠現查) request.user.check_password(pwd)
user.set_password(pwd) user.save() # 必定要調用save(),不然是不保存的
is_authenticated(),若是經過驗證,是true反之falseapp
is_active:禁止登陸網站(用戶還存在,封號)
is_staff:是否對網站有管理權限(能不能登陸admin) 函數
orm刪除網站
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)
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'