1. 程式人生 > 實用技巧 >DRF之RBAC和django快取的使用

DRF之RBAC和django快取的使用

1 基於角色的許可權控制(django內建auth體系)

# RBAC :是基於角色的訪問控制(Role-Based Access Control)即公司內部系統
在 RBAC中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理起來很方便。

# django的auth就是內建了一套基於RBAC的許可權系統

應用

# RBAC - Role-Based Access Control
# Django的 Auth元件 採用的認證規則就是RBAC

# 1)像專門做人員許可權管理的系統(CRM系統)都是公司內部使用,所以資料量都在10w一下,一般效率要求也不是很高
# 2)使用者量極大的常規專案,會分兩種使用者:前臺使用者(三大認證) 和 後臺使用者(BRAC來管理)
# 結論:沒有特殊要求的Django專案可以直接採用Auth元件的許可權六表,不需要自定義六個表,也不需要斷開表關係,單可能需要自定義User表

前後臺許可權控制

# 1)後臺使用者對各表操作,是後臺專案完成的,我們可以直接藉助admin後臺專案(Django自帶的)
# 2)後期也可以用xadmin框架來做後臺使用者許可權管理

# 3)前臺使用者的許可權管理如何處理
#   定義了一堆資料介面的檢視類,不同的登入使用者是否能訪問這些檢視類,能就代表有許可權,不能就代表無許可權
#   前臺使用者許可權用drf框架的 三大認證

# django中
	# 後臺的許可權控制(公司內部系統,crm,erp,協同平臺)
	user表
    permssion表
    group表
    user_groups表是user和group的中間表
    group_permissions表是group和permssion中間表
    user_user_permissions表是user和permission中間表
    # 前臺(主站),需要用三大認證

2 django快取

# 前端混合開發快取的使用
	-快取的位置,可以是資料庫/檔案/記憶體/Redis等,通過配置檔案來操作(以檔案為例)
    -快取的粒度:
    	-全站快取
        	中介軟體
            MIDDLEWARE = [
                'django.middleware.cache.UpdateCacheMiddleware',
                。。。。
                'django.middleware.cache.FetchFromCacheMiddleware',
            ]
            CACHE_MIDDLEWARE_SECONDS=10  # 全站快取時間
        -單頁面快取
        	在檢視函式上加裝飾器
            from django.views.decorators.cache import cache_page
            @cache_page(5)  # 快取5s鍾
            def test_cache(request):
                import time
                ctime=time.time()
                return render(request,'index.html',context={'ctime':ctime})
        	
        -頁面區域性快取
        	{% load cache %}
            {% cache 5 'name' %}  # 5表示5s鍾,name是唯一key值
             {{ ctime }}
            {% endcache %}
        	
    
# 前後端分離快取的使用
	- 如何使用
        from django.core.cache import cache
        cache.set('key',value可以是任意資料型別)
        cache.get('key')
    -應用場景:
    	-第一次查詢所有圖書,你通過多表聯查序列化之後的資料,直接快取起來
        -後續,直接先去快取查,如果有直接返回,沒有,再去連表查,返回之前再快取