sql >> データベース >  >> RDS >> Mysql

アプリケーションのアクセス許可をデータベースに保存する

    私はこのようにします。

    table name: permission
    columns: id, permission_name
    

    次に、多対多の関係テーブルを使用して、ユーザーに複数のアクセス許可を割り当てることができます

    table name: user_permission
    columns: permission_id, user_id
    

    この設計により、必要な数の権限を追加し、必要な数のユーザーに割り当てることができます。

    上記の設計は要件に適合しますが、アプリケーションにACLを実装する独自の方法があります。ここに投稿します。

    ACLの実装方法は次のようになります:

    1. ユーザーには役割(管理者、ゲスト、スタッフ、パブリック)が割り当てられます
    2. ロールには、1つまたは複数の権限(user_write、user_modify、report_read)などが割り当てられます。
    3. ユーザーの権限は、ユーザーが所属する役割から継承されます
    4. ユーザーには、役割から継承された権限とは別に、手動の権限を割り当てることができます。

    これを行うために、私は次のデータベース設計を考え出しました。

    role
    I store the role name here 
    +----------+
    | Field    |
    +----------+
    | id       |
    | role_name |
    +----------+
    
    permission:
    I store the permission name and key here 
    Permission name is for displaying to user.
    Permission key is for determining the permission.
    +----------------+
    | Field          |
    +----------------+
    | id             |
    | permission_name |
    | permission_key  |
    +----------------+
    
    role_permission
    I assign permission to role here 
    +---------------+
    | Field         |
    +---------------+
    | id            |
    | role_id       |
    | permission_id |
    +---------------+
    
    user_role
    I assign role to the user here 
    +---------------+
    | Field         |
    +---------------+
    | id            |
    | user_id       |
    | role_id       |
    +---------------+
    
    user_permission
    I store the manual permission I may allow for the user here 
    +---------------+
    | Field         |
    +---------------+
    | id            |
    | user_id       |
    | permission_id |
    +---------------+
    

    これにより、ACLをより細かく制御できます。スーパー管理者が自分で権限を割り当てることなどを許可できます。私が言ったように、これはあなたにアイデアを与えるためだけのものです。



    1. mysqlトリガーストアードトリガーは、ストアードトリガーを呼び出したステートメントによってすでに使用されています

    2. MySQLがいくつかの外部キーを削除する

    3. EssentialPostgreSQLモニタリング-パート1

    4. TSQLまたはGUIを使用してSQLServerでデータベースを作成する方法-SQLServer/TSQLチュートリアルパート24