请告诉我,如果用户具有多个角色,我如何启用Mune [英] Please tell me how can i enable mune if user having multiple roles

查看:45
本文介绍了请告诉我,如果用户具有多个角色,我如何启用Mune的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果用户有多个角色,请告诉我如何启用菜单

第1页

用户首先要登录的ASPX页


Please tell me how can i enable menu if user having multiple roles

Page1

ASPX Page first where a user ll log in


<head  runat="server">
    <title></title>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
    </style>
</head>
<body>
    <form id="form1"  runat="server">
    <div>
    
        <table class="style1">
            <tr>
                <td>
                    ID</td>
                <td>
                    <asp:TextBox ID="TextBox1" runat="server">
                </td>
            </tr>
            <tr>
                <td>
                    Password</td>
                <td>
                    <asp:TextBox ID="TextBox2" runat="server" TextMode="Password">
                </td>
            </tr>
            <tr>
                <td>
                     </td>
                <td>
                    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Login" />
                </td>
            </tr>
            <tr>
                <td>
                     </td>
                <td>
                     </td>
            </tr>
            <tr>
                <td>
                     </td>
                <td>
                     </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>




第一个代码.cs文件




Page one code .cs file

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string xmlPath = Server.MapPath("XMLFile.xml");
        string iRole = Session["module"].ToString();

        XmlDataSource xmlDS = new XmlDataSource();
        xmlDS.DataFile = xmlPath;

        xmlDS.XPath = "Home/Role[@id='" + iRole + "']";

        Menu1.DataSource = xmlDS;
        Menu1.DataBind();
        Menu1.Items[0].Text = "";
        Menu1.Items[0].Value = "";
        Menu1.Items[0].Selectable = false;

    }
}

Page 2 here it will create MENU using XML data source for authenticated user for there roles.


<body>
    <form id="form1" runat="server">
    <div class="background">

        <%--===================================================================================--%>
        <asp:menu id="Menu1" CssClass="NavigationMenu"  
        staticdisplaylevels="2" DynamicHorizontalOffset="1"
        staticsubmenuindent="1px" MaximumDynamicDisplayLevels="4"
        orientation="Horizontal"   
        DynamicPopOutImageUrl="~/Images/right-arrow.gif" 
        StaticPopOutImageUrl="~/Images/drop-arrow.gif"
        
        runat="server" Height="30px">

        <staticmenuitemstyle itemspacing="10" cssclass="staticMenuItemStyle" />
        <statichoverstyle cssclass="staticHoverStyle" />
        <staticselectedstyle cssclass="staticMenuItemSelectedStyle" /> 
        <dynamicmenuitemstyle cssclass="dynamicMenuItemStyle" />      
        <dynamichoverstyle cssclass="menuItemMouseOver" />
        <dynamicmenustyle cssclass="menuItem" />
        <dynamicselectedstyle cssclass="menuItemSelected" />
     
      <databindings>
                <asp:MenuItemBinding DataMember="Menu" TextField="text" ValueField="text" NavigateUrlField="url" />
                <asp:MenuItemBinding DataMember="SubMenu" NavigateUrlField="url" TextField="text"
                    ValueField="text" />
            </databindings>

      
    </div>
    <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml">
    </form>
</body>  


Page 2 .cs文件


Page 2 .cs file

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=INNOVENT-PC;Initial Catalog=test;Integrated Security=True");
        con.Open();
        SqlDataReader dr;
        SqlCommand cmd = new SqlCommand("select * from tbl_test1 where User_name='"+ TextBox1.Text+"' ", con);
        dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Session["module"] = dr["Module"].ToString();
            Response.Redirect("Default.aspx?");
        }
        
    }
}


XML文件



XML File


<home>
  
  <role id="PMGT">
    <menu text="Books" url="MenuFromXml.aspx">
      <submenu text="Asp.Net" url="MenuFromXml.aspx"></submenu>
      <submenu text="Ajax" url="MenuFromXml.aspx"></submenu>
      <submenu text="MS SQL Server 2005" url="MenuFromXml.aspx"></submenu>
      <submenu text="JavaScript" url="MenuFromXml.aspx"></submenu>
    </menu>
  </role>
    <role id="WDS">
    <menu text="Electronics" url="MenuFromXml.aspx">
      <submenu text="Camera" url="MenuFromXml.aspx">
        <submenu text="Digital" url="MenuFromXml.aspx">
          <submenu text="Canon" url="MenuFromXml.aspx"></submenu>
          <submenu text="Kodak" url="MenuFromXml.aspx"></submenu>
          <submenu text="Sony" url="MenuFromXml.aspx"></submenu>
          <submenu text="Casio" url="MenuFromXml.aspx"></submenu>
          <submenu text="Fuji" url="MenuFromXml.aspx"></submenu>
        </submenu>
        <submenu text="Film Camera" url="MenuFromXml.aspx"></submenu>
      </submenu>
      <submenu text="DVDs" url="MenuFromXml.aspx">
        <submenu text="Comedy" url="MenuFromXml.aspx">
          <submenu text="English" url="MenuFromXml.aspx"></submenu>
          <submenu text="French" url="MenuFromXml.aspx"></submenu>
          <submenu text="German" url="MenuFromXml.aspx"></submenu>
          <submenu text="Spanish" url="MenuFromXml.aspx"></submenu>
        </submenu>
        <submenu text="Kids Movies" url="MenuFromXml.aspx"></submenu>
        <submenu text="Romance Movies" url="MenuFromXml.aspx"></submenu>
        <submenu text="Action Movies" url="MenuFromXml.aspx"></submenu>
      </submenu>
    </menu>
    </role>
</home>


请告诉我如果用户具有多个角色该如何启用菜单


Please tell me how can i enable MENU if user having multiple roles

推荐答案

请告诉我如果用户具有多个角色该如何启用菜单
根据当前的设计,更倾向于假设一个人将扮演一种角色.因此,即使为您的多用户方案更改代码是可能的,但这也是一种解决方法.现在,在这里考虑两个角色:
1.您可以使用所有可能的组合在XML中定义新角色.如RoleId =''PMGT | WDS''.使用XPath,找到角色,一旦找到完全匹配的内容,就使用该节点.您可以根据需要使用任何定界符(例如RoleId ="PMGT,WDS").
2.否则,您可以为找到的第一个角色添加菜单项,然后继续进行更多角色比较,直到菜单xml结束.只要找到匹配的角色,就继续添加菜单项.
Please tell me how can i enable MENU if user having multiple roles
Based on the current design, it is more towards assumption that one person will have one role. So even though changing code for your multi user scenario is possible but would be a workaround. Now, for considering two roles here:
1. Either you can define new roles in XML with all possible combination. Like RoleId=''PMGT|WDS''. Using XPath, find the role and once you find the exact match use that node. You can use any delimiter as per your wish (Like RoleId=''PMGT,WDS'').
2. Or else you can add menu items for first role found and then move on with more role comparison till the end of menu xml. As long as you find a role match keep adding the menu items.


这篇关于请告诉我,如果用户具有多个角色,我如何启用Mune的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆