您現在的位置是:首頁 > 網路遊戲首頁網路遊戲

如何對django api做許可權限制

簡介首先,我們需要安裝依賴包,django-allauth,這個庫還是很強大的,集成了django自帶的使用者驗證系統,還支援各種第三方的sso使用者認證,有興趣的可以研究一下(https:github

許可權限制是什麼意思

前面的篇章,我們搭建了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這個庫。

如何對django api做許可權限制

requirements。txt

安裝好之後,需要修改settings。py檔案,enable 認證相關的配置。

如何對django api做許可權限制

installed app

如何對django api做許可權限制

settings。py

接下來我們自定義了一個使用者profile,可以新增更多的field,比如使用者的role,來做更多的角色的限制。

如何對django api做許可權限制

models。py

接著我們需要修改root urls檔案,註冊rest-auth的路由。

如何對django api做許可權限制

urls。py

最後,我們只需要在路由具體實現裡面,給viewset新增認證和許可權的classes就可以了。

如何對django api做許可權限制

這裡的permission_classes,我們只是簡單了新增是否認證的判斷,如果api有不同的角色使用者的話,還可以對使用者的role來做判斷,進一步限制不同角色的使用者對api的許可權訪問。

最後我們訪問docs頁面,去呼叫todos列表介面看一下。

如何對django api做許可權限制

我們可以看到返回401提示使用者沒有認證。

接著,我們來認證使用者,獲取token,再次呼叫一下。

如何對django api做許可權限制

輸入使用者名稱密碼,認證

如何對django api做許可權限制

返回token資訊

如何對django api做許可權限制

輸入token驗證

如何對django api做許可權限制

帶有token呼叫api,返回200成功。

到這,我們就對自己的api做了許可權的限制。謝謝大家。

Top