網站首頁 編程語言 正文
Django使用裝飾器限制對視圖的訪問
1.登錄鑒權裝飾器
除了可以在視圖處理中校驗用戶身份以及驗證用戶權限之外,Django還提供了便捷的裝飾器來完成這兩類校驗。@login_required
裝飾器用來驗證用戶是否登錄,只有登錄的用戶才可以訪問視圖,并獲得響應,否則可以重定向到登錄頁引導用戶登錄。@permission_required
裝飾器用來校驗用戶是否具有特定的權限,只有校驗通過的用戶才可以訪問視圖。下面介紹這兩個裝飾器的使用方法與實現原理
2.@login_required
使用@login_required
可以傳遞兩個參數
- login_url:匿名用戶訪問時重定向的URL,通常都會跳轉到登錄頁。默認的登錄頁由settings.LOGIN_URL指定,需要設置為系統中定義的登錄頁URL
- redirect_field_name:默認值為next,作為GET請求的參數。這個參數可以用于登錄后直接跳回到原先訪問的視圖
3.@permission_required
使用@permission_required
可以傳遞三個參數:
- perm:需要校驗的權限,可以是列表、元組或字符串。如果是列表或元組則需要用戶同時擁有這些權限
- login_url:沒有指定權限的用戶訪問時重定向的URL,與@login_required中的login_url參數含義相同
- raise_exception:默認為False,如果設置為True,則當沒有權限的用戶訪問時將直接返回403
由于Python支持給函數配置多個裝飾器,所以,校驗登錄和校驗權限的裝飾器可以同時使用。例如:
這樣,訪問Topic詳情視圖時,不僅需要當前用戶是已登錄用戶,還需要其同時擁有can_view_topic和add_topic兩個權限
原文鏈接:https://blog.csdn.net/Gherbirthday0916/article/details/127305212
相關推薦
- 2022-12-13 Android之rk3588?開發環境準備及問題解決方法_Android
- 2022-11-02 Go?并發編程協程及調度機制詳情_Golang
- 2022-06-22 C++詳細分析引用的使用及其底層原理_C 語言
- 2022-11-23 詳解Android消息機制完整的執行流程_Android
- 2022-12-07 利用C語言模擬實現qsort,strcpy,strcat,strcmp函數_C 語言
- 2022-11-12 sass在react中的基本使用(實例詳解)_React
- 2023-12-12 線程同步的使用--this作為線程對象鎖synchronized關鍵字
- 2022-04-19 Python之random庫的常用函數有哪些_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支