2011-07-12 8 views
0

私はSQLデータベーステーブルのユーザーの集合に対してユーザーを検証しているWebアプリケーションを開発しています。マスターページと他のいくつかのページがあります。ユーザー 'A'がアプリケーションにログインすると、アプリケーションはSQLテーブルにクエリしてユーザーを認証します。マスターページのボタンを隠す方法または表示する方法

私の質問は、SQLのtable.soのroleというカラムがあり、ユーザがロールに基づいて認証され、私のホームページにボタンコントロールを表示したくない場合です。私のロジックはコードにありますログインページの後ろに表示されます。

誰でもお手伝いできますか?

答えて

1

ボタンコントロールの.Visibleプロパティを使用する必要があります。それらにアクセスする必要がある場合はtrueに設定し、そうでない場合はfalseに設定します。

+0

はい私はあなたが認証するために、テーブルを照会しているとき、私は、ログイン資格情報に基づいて、それを行うにしたい.but役割に基づいて、IEこと – Macnique

+0

わかりましたので、あなたがその列の値を読み取る必要があります使用していますその上に目に見える論理を立ててください。より具体的なヘルプが必要な場合は、コードの詳細が必要です。 –

+0

はい私はセッション変数にロールを保存し、それを他のページのページlaodに呼び出しました...そして今はうまく動いています – Macnique

1

試しましたか?

MyButton.Visible = HttpContext.Current.User.IsInRole("..."); 
0

シネクのソリューションは、使用する必要があります。ただし、コンテキストに適切に役割を設定する必要があります。あなたがそこにユーザ情報を保存することができる/そうすべきであるので、それは間違いなく努力の価値があります。

このアーキテクチャをやり直すオプションがない場合は、データグリッドのitemdataboundイベントを使用してボタンを非表示にすることができます。

void Item_Bound(Object sender, DataGridItemEventArgs e) 
    { 

    if((e.Item.ItemType == ListItemType.Item) || 
     (e.Item.ItemType == ListItemType.AlternatingItem)) 
    { 

     Integer intButtonColumn = ### 
     Button btn = e.Item.Cells[intButtonColumn].FindControls[0]; 
     btn.Visible = IsUserInRole();  
    }   

    } 
関連する問題