DELPHI で権限管理を実装するためのヒント
DELPHI を使用していくつかのアプリケーション システムをコンパイルする場合、さまざまなユーザーに異なる権限を付与する必要があることがよくあります。また、プログラム内で各ユーザーに権限を割り当てると、プログラムの準備だけでなく、システムによって権限の割り当て方法も異なります。とても面倒ですし、経営的にも良くありません!筆者が最近、より良い方法を思いついたので、それを共有したいと思います。さらにアドバイスをいただければ幸いです。
多くのシステムでは、通常、権限はいくつかのレベルに分割されています。各レベルのユーザーが実行できる操作は異なります。この機能を実現する方法は、通常、異なる権限を持つユーザーが異なるメニューを表示できるようにすることです。簡単に言えば、このメニューは特定の権限を持たないユーザーには表示されません。この制御を実現するために、プログラマーは多くの場合、このモジュールの作業に多くの時間を費やす必要があり、多くの貴重な時間を無駄にしています。
著者のアイデアは、2 次元配列を設定すると、最初の次元は第 1 レベルのメニューを表し、2 番目の次元はサブメニューを表すというものです。各配列要素には 0 または 1 の 2 つの数値のみが格納されます。ある権限は 2 次元配列に対応し、この配列は対応するメニューを表します。特定のレベルのユーザーに権限を割り当てると、対応する配列が作成されます。ログイン時に配列から各要素の値を取得し、1 の場合は対応するメニューが表示され、0 の場合はメニューが表示されません。この方法は分類に使用できるだけでなく (同じレベルのユーザーの配列は同じです)、対応する値を 0 または 1 に変更する限り、権限を異なるユーザー間で細分化することもできます。
上記は簡単な例の結果です。
以下はソース プログラムの一部です (これは単なる説明用のプログラム例です)。簡単にするために、プログラムにはフォームとメイン メニューが 1 つだけあります。フォーム作成時に配列Mを初期化し、表示時に配列の値を読み込み、メニューのEnabledプロパティやVisibleプロパティのTrueかFalseを設定することで表示を制御します! !
変数
フォーム1: TForm1;
m:array[0..1,0..4] of integer // 格納された配列を定義します。
i,j:integer;//ループの変数を定義する
実装
{$R *.dfm}
手順 TForm1.FormShow(送信者: TObject);
begin //数値を読み取り、メニューの表示を制御します
for i:=低(m)から高(m)へ
for j:=Low(m[i]) から High(m[i]) が始まります
m[i][j]=0 の場合、MainMenu1.Items[i].Items[j].Enabled:=false
else MainMenu1.Items[i].Items[j].Enabled:=true;
終わり;
終わり;
プロシージャ TForm1.FormCreate(送信者: TObject);
begin //以下は初期化です
k:=0;
for i:=低(m)から高(m)へ
for j:=Low(m[i]) to High(m[i])
(j mod 2)=0 の場合、m[i][j]:=1
それ以外の場合、m[i][j]:=0;
終わり;