Django csrf跨站請求 csrf的處理 Auth模組
阿新 • • 發佈:2022-03-28
內容概要
- csrf跨站請求
- csrf的處理
- Auth模組
- 擴充套件auth_user表字段
內容詳細
csrf跨站請求
# 背景: 釣魚網站 ''' 英語4級報名網站為例 你要在這個網站要付費,你去的這個網站是一個冒牌的網站,他就去冒牌網站裡面付費了,前付到了冒牌網站,沒有報名成功。 ''' 他會出現在form表單中,action引數:朝後端傳送的地址 # 怎麼解決這個問題? # csrf是針對與post請求的才會做驗證 '''token相關的,一般都是一個串,祕鑰, 私鑰,公鑰''' # 兩種解決方式 {#data:{'a':1, 'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()},#} data:{'a':1, 'csrfmiddlewaretoken': '{{ csrf_token }}'},
csrf相關裝飾器
''' 如果使用中介軟體限制的話,他就會限制全域性的,要麼全部限制,要麼全部不限制 只有index函式需要驗證,其他的不需要驗證 我只想讓home函式不驗證,其他的都需要驗證 ''' 提供了2個裝飾器 csrf_protect: 需要驗證 csrf_exempt:不需要驗證 ''' 按照FBV和CBV的使用即可 ''' from django.views.decorators.csrf import csrf_exempt,csrf_protect ''' 針對CBV: csrf_protect的三種方式都是可以的 csrf_exempt前兩種方式都不行,只有第三種方式可以的 '''
Auth模組
# 遷移資料庫會有一個表生成,auth_user
# django專案建立完後之後,會有一個預設的路由,admin/
# admin/是django預設提供的後臺管理介面
訪問admin/登入參照的資料就是從auth_user表中來,前提是必須是超級管理員
# 如何建立超級管理員?
python3 manage.py createsuperuser
擴充套件auth_user表字段
# 前提:一般情況,你執行了資料庫遷移命令,就不要在擴充套件了 要想擴充套件欄位,最後在遷移資料庫命令之前擴充套件。 如果已經遷移過了,也是可以擴充套件的,只不過有點麻煩,還有可能容易出錯 # 擴充套件auth_user表,要繼承Abstractuser類 from django.contrib.auth.models import AbstractUser # Create your models here. # 如果擴充套件欄位的話,就不要在繼承models.Model class UserInfo(AbstractUser): ''' 1. 原來已經有的欄位不要動 2. 你只寫你自己需要擴充套件的欄位 3. 擴充套件之後,原來的auth_user表已經不存在了 4. 從新生成一個新表 ''' phone = models.CharField(max_length=32) # 可以上傳任意的檔案 avatar = models.FileField(upload_to='static/img/', default='static/img/default.png') # 只能上傳圖片 # avatar = models.ImageField create_time = models.DateTimeField(auto_now_add=True) '''在配置檔案中增加一下內容''' # AUTH_USER_MODEL = '應用名.類名' AUTH_USER_MODEL = 'app01.UserInfo'