ローカルでスキャンし、ローカルマシンまたは同じLANにあるマシンにあるデータベースにドキュメントを保存するためにローカルで使用されるビジネス用の小さなアプリケーションを作成します。
ユーザー名とパスワードを使用してUsersというテーブルを作成し、ユーザータイプIDに従ってフォームまたは別のフォームを表示することができます。しかし、私はベテランのプログラマーが推奨するアプローチにもっと興味があります。
何かアドバイス?
編集:私は十分に安全であるが、十分に拡張可能である何かを探しています。
ローカルでスキャンし、ローカルマシンまたは同じLANにあるマシンにあるデータベースにドキュメントを保存するためにローカルで使用されるビジネス用の小さなアプリケーションを作成します。
ユーザー名とパスワードを使用してUsersというテーブルを作成し、ユーザータイプIDに従ってフォームまたは別のフォームを表示することができます。しかし、私はベテランのプログラマーが推奨するアプローチにもっと興味があります。
何かアドバイス?
編集:私は十分に安全であるが、十分に拡張可能である何かを探しています。
自分が「季節」だとは思えませんが、ここ数週間同じ問題に直面しているので、答えたいと思います。
許可された操作を識別し、それをロールグループに関連付けてから、ユーザーをグループに関連付けるために、アクセス許可マスクを定義します。より完全なのは権限マスクであり、グループ定義でより詳細なものが許可されます。
このように、複数のユーザーに対して1つの権限定義があります。これは、権限マスクを変更および拡張できるため、ユーザーごとのタイプに基づいてロールを定義するよりも優れています。
より複雑なスキームが可能であり、グループのアクセス許可をオーバーライドできるユーザーごとのアクセス許可、またはグループのアクセス許可を管理できるスーパーバイザーユーザーを定義するための階層アクセス許可マスクを許可できます。これらのモデルの適用は、必要なスケーラビリティとシステムのユーザー数によって異なります。
単純なアプリケーションの場合は、宇宙船を使用して道路を横断しないでください。
次のDBスキーマを作成します。
ユーザー:ユーザー名とハッシュ化されたパスワード
ロール:RoleName、RoleID、RoleStrength(int)
RolesMembership:将来の複数のメンバーシップを可能にするためのuseridとroleidを含むRolemembershipテーブル。
ロールを設定するときは、数値の重みを付けてください。つまり、管理者= 1000、パワーユーザー= 500、ゲスト= 10です。このように、フォームで、ユーザーレベルが500以上の場合は全表示を設定し、そうでない場合は表示のみまたはアクセスなしと言うことができます。
さらに良いことに、IsPowerUserやIsAdminなどのメソッドを使用してセキュリティクラスで抽象化します。
シンプルで読みやすく、再利用可能です。
ユーザー名とパスワードを使用してUsersというテーブルを作成し、ユーザータイプIDに従ってフォームまたは別のフォームを表示することができます。
私に行くための合理的な方法のように聞こえます。パスワードをハッシュすることを忘れないでください。
また、共通のコントロールをフォームにコンポーネント化して、共通の部分を再利用できるようにします。
Visual Studioを使用している場合は、組み込みのメンバーシッププロバイダーを使用します。これにより、データベースとすべてが自動的に処理されます。車輪の再発明をする必要はありません。
ASP.NETを対象としていますが、次の記事を確認することを強くお勧めします:http ://www.4guysfromrolla.com/articles/120705-1.aspx
組み込みのMembershipおよびRolesオブジェクト(デスクトップアプリケーションでも)を使用して、独自の特権スキーマを定義できます。この機能を使用すると、ユーザー(およびロール)テーブルの独自のデータベースエントリを作成する手間が省け、パスワードハッシュも処理されます(より安全なアプリケーションにつながります)。
最後に、あなたが読みたいと思うかもしれない公式のMSDN記事:
「メンバーシップ」について:http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx
「役割」について:http://msdn.microsoft.com/en-us/library/ff647401.aspx