10

私の Yii アプリケーションでは、承認階層とビジネス ルールをコードで記述し、ユーザー、ロール、およびアクセス許可をデータベースに格納したいと考えています。これにより、ビジネス ロジック (コードである必要があります) が、使用する必要がある情報 (データである必要があります) から分離されます。Yii はこれをサポートしていないようです。

Yii では、ビジネス ロジックをファイル (CPhpAuthManager) に入れるか、データベース (CdbAuthManager) に入れるかを選択できます。いずれにしても、ビジネス ロジックをデータとして扱っています。Yii は実際にビジネス ロジックを文字列として取得し、それを 経由で実行しますがeval、これはひどい方法のように思えます。

これの理由は何ですか?

望む結果を得るにはどうすればよいですか?

4

2 に答える 2

2

ビジネスロジックのPHPコードには、必要な数のロジックを含めることができます。Yiiは、このロジックを追加する多くの方法をサポートしています。LoginForm.php、UserIdentity.php、SiteController.php、...ここに制限はありません。

Yiiもサポートしているのは、RBACにロジックのスニペットを追加することです。一般的な使用例は、デフォルトでbizRulesを使用して、2つのルール「Authenticated」と「Guest」をサイトのすべてのユーザーに割り当てることです。'Authenticated'には次のようなbizRuleがあります

return !Yii::app()->user->isGuest;

「ゲスト」は

return Yii::app()->user->isGuest;

その結果、ログインしているユーザーは「ゲスト」ではなく「認証済み」になります。もう1つの例は、ユーザープロファイルのビューの編集です。これは、次のように、現在のユーザーのみが編集できます。

return $model->id === Yii::app()->user->id;
于 2012-03-09T23:30:41.277 に答える
1

データベースとコードに何かを入れるのはなぜですか?

正当な理由の 1 つは、開発者以外が編集できるようにするためです。

私たちのアプリでは、ユーザーが自分のユーザーとアイテムに対する権限を管理できるようにしています。

yii の rbac ビジネス ルールを使用する必要はありません。いくつかの異なる役割とタスクを許可し、残りの認証ロジックをコードに含めることができます。

于 2012-04-25T03:28:30.250 に答える