1

私の友人と私は、ユーザーがプラグインを介して機能を拡張できるようにする C# IRC ボットを作成しています。各コマンドが独自の権限を持つことができるようにするために必要です。特定のレベル以上のユーザーのみがコマンドを実行できるようにします。これをどのように行うかを決めるのに苦労しました。

パーミッション システムは 1 ~ 10 です。1 は最も権限が低く、10 は最も高い権限です。各ユーザーには 1 ~ 10 の権限が割り当てられます。各コマンドには、必要なアクセス許可レベルも割り当てられます。私の質問は基本的に次のとおりです。プラグインで複数のコマンドを使用できるコマンドごとのアクセス許可システムを作成するにはどうすればよいですか。

私は Stack Overflow の善良な人々が私を助けてくれることを望んでいました。これが私がここで尋ねた最初の質問であるため、ご容赦ください。どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

1

ユーザーが持っている承認レベルを表すロールに対して 1 ~ 10 の値を返す IPrincipal の独自の実装を作成します。次に、ユーザーを認証するときに、これをプリンシパル アクセス許可として割り当てます。

次に、すべてのメソッド (つまり、プラグイン メソッドなど) に PrincipalPermission 属性を適用して、適切な役割を持つユーザーがコードのみを実行できるようにします。

たとえば、レベル 5 の場合、ロール 1、2、3、4、5 が割り当てられます。

Role プロパティが 6 に設定された PrincpalPermission 属性を持つメソッドを 1 つ持つことができますが、これにはアクセスできません。また、Role プロパティが 3 に設定された PrincipalPermission 属性を持つ別のメソッドにもアクセスできます。

于 2009-12-25T05:06:29.693 に答える
0

それは間違いなく機能しますが、別の方法は「機能」の概念です。各ユーザーは、'update-user'、'delete-user'、'download-file' などの機能のリストを持っています。リストは無制限です。ユーザーに機能を付与し、各機能が必要なリストをチェックできます

if (!checkCaps('shell-cmd', 'google', 'open-url')) sendError('申し訳ありませんが、権限はありません')

「ゲスト」、「ユーザー」、「マネージャー」、「管理者」などの一連の権限を集約するロールを定義できます。

于 2009-12-25T05:05:29.203 に答える