3

こんにちは、Web フォームを使用する際に質問があります。ナビゲーションを含むマスター ページがあります。ログイン後にナビゲーション バーをカスタマイズできるかどうかを尋ねたいと思います。さまざまな役割 (管理者、学生、スタッフ) )..

        <asp:ContentPlaceHolder runat="server" ID="FeaturedContent" >
        <nav>
            <ul id="menu" style="text-align:center;">
                <li><a href="~/">Moderator</a></li>
                <li><a href="~/About.aspx">Supervisor</a></li>
                <li><a href="~/Contact.aspx">Student</a></li>
            </ul>
        </nav>
    </asp:ContentPlaceHolder>

これは私のサイトマスターのコンテンツプレースホルダーのサンプルです。私の考えは、学生でログインしたときにモデレーターとスーパーバイザーを非表示にすることです。ロール「学生」をチェックしてから、モデレーターとスーパーバイザーのサイトマスターナビゲーションバーをユーザーから非表示にすることができます。これは私だけが知っているので、より良い解決策があるとアドバイスしてください..ありがとう..

4

3 に答える 3

4

あなたの問題のために、私はあなたのhtmlコードを次のように変更しました

<asp:ContentPlaceHolder runat="server" ID="FeaturedContent" >
        <nav>
            <ul id="menu" style="text-align:center;">
                <li id="li_moderator" runat="server"><a href="~/">Moderator</a></li>
                <li id="li_supervisor" runat="server"><a href="~/About.aspx">Supervisor</a></li>
                <li><a href="~/Contact.aspx">Student</a></li>
            </ul>
        </nav>
    </asp:ContentPlaceHolder>

あなたのサーバー側のコーディングよりも、ログインの確認と学生の権利の後に、メニューを非表示または表示できます。次のコードを使用します

li_moderator.style.add("display","none")
  li_supervisor.style.add("display","none")

使用以外の場合に表示する場合も同じです

  li_moderator.style.add("display","inherit")
  li_supervisor.style.add("display","inherit")
于 2012-11-30T12:31:11.690 に答える
3

これを提案してみてください:

<asp:ContentPlaceHolder runat="server" ID="FeaturedContent">
            <nav>
                <ul id="menu" style="text-align: center;">
                    <li id="menuModerator" runat="server"><a href="~/">Moderator</a></li>
                    <li id="menuSupervisor" runat="server"><a href="~/About.aspx">Supervisor</a></li>
                    <li id="menuStudent" runat="server"><a href="~/Contact.aspx">Student</a></li>
                </ul>
            </nav>
</asp:ContentPlaceHolder>

Page_Load 内の Site.Maste.cs で:

if (!Page.User.IsInRole("Moderator"))
   {
      menuModerator.Visible = false;
   }

ドメイン グループの場合 Page.User.IsInRole(@"Domain\GroupName")

于 2012-11-30T09:08:39.140 に答える
1

列挙型をこのように設定します。

public enum AccessRights
{
    LogisticsCoordinator_RW, //Read-Write,
    LogisticsCoordinator_R, //Read only Purchasing and Inventory
    ProcurementManager_RW, // Read-Write access to track purchase of Sand on monitor on hand Inventory
    ProcurementManager_R, //read access to Create Frac Jobs , Dispatch and reroute
    SystemAdministrator, //Full Rights to Vertex_Personnel only
    StudentManagement_R, //Read Access Only 
    AppAdministrator_R,
    NonAdmin,
    None,
    Full,
    Default
}

今、私はLDAP / ActiveDirectoryを使用して、SQLServerまたはユーザー権限をチェックする他の手段を使用できるユーザーアクセス権を決定します

これはコードの例にすぎません。コード全体を貼り付けるつもりはありませんが、アイデアを得る必要があります。

 _ADPath = ConfigurationManager.AppSettings["ADPath"];
 _Domain = ConfigurationManager.AppSettings["ISDDomain"];
 _UserId = ((BasePage)Page).CurrentUser;
 string[] strUser = _UserId.Split('\\');
 if (strUser.Length == 2)
 {
     _UserId = strUser[1];
 }

 // uxLBLoginError.Text = "";
 try
 {
     LdapAuthentication la = new LdapAuthentication(_ADPath);

     if (!AdPassRequired)
     {
         //use this if password not required
         _authenticated = la.IsUserGroupMember(_UserId, AdGroupToPass);
     }
     //else
     //{
     //    // use this if password is required
     //    _authenticated = la.IsAuthenticated(_Domain, _UserId, strPassword);
     //}
     if (_authenticated)
     {
         //test the roles functionality
         ((BasePage)Page).GetDBRoleNames(_UserId);
         Session["User_Initial_Validated"] = true;
         Session["isDefault_Loaded"] = true;
         Session["AccessRights"] = AccessRights.Default;
         Session["UserId"] = _UserId;
         //Response.Redirect("~/Default.aspx");
     }
于 2012-11-30T08:24:11.433 に答える