0

私はあなたの意見に興味があります: 現時点ではデータベースに 1 つのユーザー テーブルしかありませんが、管理者アカウントからパブリック アカウントを分離するために新しいテーブルを追加することを考えています。

長所:ログインしようとするユーザーを検証するために「ロール」テーブルをチェックする必要はありません。

短所: 管理者アカウントはコミュニティの一部になることはできず、バックエンド専用です。誰かをモデレーターに昇進させると、冗長になりすぎます。彼は自分の公開アカウントで投稿を書くことができません。

ユーザーがチームメイト(疑似コード)であるかどうかを確認するための私の現在のソリューション:

$needed_role = "admin";
if ($User->is_in_team($user_id)) { // SELECT id FROM user WHERE team=1 AND user_id=$user_id
    $roles = $User->getRoles($user_id);
    if (in_array($needed_role, $roles)) {
        // login...
    }
}

それは簡単な例です。役割は、「blog_post_write」、「blog_post_delete」などの権限で分割されています...

私が現在行っている解決策は完璧ではないので、データベースをポン引きするのを手伝ってください! :)

4

2 に答える 2

1

is_adminおよびis_moderatorブール変数を持つ1つのusersテーブルを単純に持つことはできません。次に、チームのメンバーを調べたい場合は、1つのテーブルを調べるだけで済みます。管理者やモデレーターの権限を持つユーザーだけでなく、実際に別の種類のユーザーにしたい場合を除いて、それらを分離することは考えません。

于 2012-11-02T01:34:43.647 に答える
1

別のテーブルを持つ特別な理由はありますか? 多分もっと余分なフィールド?セキュリティ対策として他のテーブルをチェックする必要がありますか?

..+---------+-----------+-----------+-------------+
..|             User                              |
..+---------+-----------+-----------+-------------+
..| UserID  | UserAlias | UserPwd   | UserIsAdmin |
..+---------+-----------+-----------+-------------+
..| 87      | johndoe   | sdsd<ds33 | false       |
..+---------+-----------+-----------+-------------+
..| 88      | janesmith | sd456656h | true        |
..+---------+-----------+-----------+-------------+
..| 89      | annethmps | s34ddd545 | true        |
..+---------+-----------+-----------+-------------+
..| 90      | mikekane  | s34ddd545 | false       |
..+---------+-----------+-----------+-------------+

..+---------+-----------+-----------+
..|             Admin               |
..+---------+-----------+-----------+
..| UserID  | Extra1    | Extra2    |
..+---------+-----------+-----------+
..| 88      | sdfsds3   | s2323h    |
..+---------+-----------+-----------+
..| 89      | sdsds2    | s3ghgh5   |
..+---------+-----------+-----------+

乾杯。

于 2012-11-02T01:45:14.000 に答える