Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Djangoで組織とユーザーの権限管理をやってみよう #devio2022

seiichi
July 30, 2022

Djangoで組織とユーザーの権限管理をやってみよう #devio2022

最近ひょんなことからDjangoでWebアプリケーション開発を始めたのですが、組織とユーザーの権限管理の実装でハマるポイントが多かったので紹介させていただきます。

※2022年7月19日〜29日開催の技術カンファレンス「DevelopersIO 2022」のセッション動画での資料です。

youtube: https://youtu.be/7zQdngoCysw
github: https://github.com/seiichi1101/devio2022

seiichi

July 30, 2022
Tweet

More Decks by seiichi

Other Decks in Technology

Transcript

  1. 10 初期設定 # Python Version $python --version Python 3.9.6 #

    Install Django $python -m pip install Django $python -m django --version 3.2.13 # Create Django Project $django-admin startproject devio2022
  2. 11

  3. 14 アプローチ - モデル設計 1. 組み込みのGroupとPermissionsを利用する方法 テーブル数やコード量が増えず簡潔 Djangoが想定している以上の使い方ができない 2. 3rd

    Partyのライブラリを利用する方法 組織管理者の作成や組織への招待など多機能 必要以上の機能があることで混乱したり拡張が難しい 3. 自分で必要なモデルと機能を実装する方法 必要十分な機能を自分で実装でき拡張性が高い コード量・テーブル数が増え複雑さ・管理コストが増える
  4. 15 アプローチ - 権限管理ライブラリ 1. django-guardian 2. django-role-permissions 既存のPermissionsモデルを拡張して使う インスタンスレベルでのアクセス制御ができる

    汎用的な権限のまとまりを設定することは難しい 3. django-rules 権限管理にデータベースモデルを使用しない コードベースでアクセス制御ができるためカスタマイズしやすい 汎用的な権限のまとまりを設定することもできる アクセス制御のロジックを実装するため多少コード量は増える
  5. 19

  6. 24