您現在的位置是:首頁 > 網路遊戲首頁網路遊戲
如何對django api做許可權限制
- 2022-09-03
許可權限制是什麼意思
前面的篇章,我們搭建了django的rest api服務,那麼現在,我們就需要對api來做許可權限制,不能讓隨便一個人就可以訪問api介面。一般api訪問的許可權限制,包括basic的驗證,每次的請求頭中,帶有username和password,access_token驗證,一般是sso生成的access_token,透過token可以拿到使用者的info,請求的header裡面帶有authorization: “Bearer access_token”。還有jwt(json web token),請求的頭中帶有authorization: “JWT token”。這裡,我們就採用jwt,來作為使用者的許可權驗證。
首先,我們需要安裝依賴包,django-allauth,這個庫還是很強大的,集成了django自帶的使用者驗證系統,還支援各種第三方的sso使用者認證,有興趣的可以研究一下(https://github。com/pennersr/django-allauth)。可以自定義
使用者登陸
模板頁面,新增google,wechat等等的其他社交賬戶認證。這裡我就只支援rest api認證,所以還需要安裝django-rest-auth,這個就是把系統認證匯出了rest介面,可以透過api認證使用者。如果需要支援json web token,我們還需要djangorestframework-jwt這個庫。
requirements。txt
安裝好之後,需要修改settings。py檔案,enable 認證相關的配置。
installed app
settings。py
接下來我們自定義了一個使用者profile,可以新增更多的field,比如使用者的role,來做更多的角色的限制。
models。py
接著我們需要修改root urls檔案,註冊rest-auth的路由。
urls。py
最後,我們只需要在路由具體實現裡面,給viewset新增認證和許可權的classes就可以了。
這裡的permission_classes,我們只是簡單了新增是否認證的判斷,如果api有不同的角色使用者的話,還可以對使用者的role來做判斷,進一步限制不同角色的使用者對api的許可權訪問。
最後我們訪問docs頁面,去呼叫todos列表介面看一下。
我們可以看到返回401提示使用者沒有認證。
接著,我們來認證使用者,獲取token,再次呼叫一下。
輸入使用者名稱密碼,認證
返回token資訊
輸入token驗證
帶有token呼叫api,返回200成功。
到這,我們就對自己的api做了許可權的限制。謝謝大家。