4

私はAsp.Net/C#アプリケーションを構築するために使用しています。私は使用しています。私の多くが特定のページ機能またはユーザーインターフェイスに制限されForms Authenticationているという要件があります。ユーザーのみに使用できると思います。したがって、私の質問は、特定のことを知っているときです。ページコンポーネントは、特定の認証されたユーザーから非表示にする必要があります。どうすればよいですか。page_loadイベントでこれを使用して、このような要件を持つページのコンポーネントを非表示にする必要があると思いますか。authenticated (not anonymous) usersLogin ControlAuthenticated vs Anonymous

// Is this Tito visiting the page?
string userName = User.Identity.Name;
if (string.Compare(userName, "Tito", true) == 0)
 // This is Tito, SHOW the Delete column
 FilesGrid.Columns[1].Visible = true;
else
 // This is NOT Tito, HIDE the Delete column
 FilesGrid.Columns[1].Visible = false;

これを達成するためのより良いアプローチはありますか?どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

また、コントロールを非表示にすると、base64 でエンコードされた値がビューステートにまだ存在することも知っておく必要があります。クライアントはそれを読み取ることができます。

クライアントは、アクションをトリガーする隠しコントロールを読み取ることもできます。そして、「スマート」クライアントがこのアクションをトリガーすることを妨げるものは何もありません。

そう :

  • 表示したくない場合は、制限されたアクセス値をコントロールにバインドしないでください (prerender は、表示されていないコントロールでは呼び出されません。したがって、prerender でバインディングを行うことは良い習慣です)。
  • 呼び出しが承認されているかどうかを確認するために、イベント ハンドラー内に別のアクセス制御チェックを常に追加する必要があります。
于 2012-04-17T07:40:19.737 に答える
1

ここでは、Membeship User クラスとRolePrincipalを使用してユーザーを分離できます。

if(HttpContext.Current.User.IsInRole("Level1"))
{
    FilesGrid.Columns[1].Visible = true;
}
else
{
    FilesGrid.Columns[1].Visible = false;
}

したがって、ユーザーを作成してさまざまなメンバーシップ名に配置し、メンバーシップの役割に応じてさまざまなコントロールを表示します。

いくつかのリンク:

http://msdn.microsoft.com/en-us/library/ff648345.aspx

http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx

于 2012-04-17T07:07:22.923 に答える