繁体   English   中英

使用背后的代码在asp.net网络表单中的角色和用户管理

[英]Roles and User management in asp.net webforms using code behind

问题 :使用我在数据库中创建的角色,我希望能够根据该用户角色来限制特定用户的使用。

信息 :我没有使用MVC方法,只有空的.aspx页已连接到数据库以显示信息等。所提供的表图像包含了数据库中的角色/用户信息角色用户角色/用户 理想情况下,我想根据用户所处的角色从菜单中删除项目。因此,假设用户处于“工作人员”角色,则他们只会在aspx页面菜单上看到2个菜单“控件”或“按钮”。

尝试的解决方案 :用户登录后在登录页面上,Page_Load方法检查用户所处的角色并将其发送到相应的页面。 该解决方案的问题在于,我必须根据用户所处的角色为每个页面创建重复项。

问题 :如何使用后面的C#代码在aspx网络表单中编辑HTML。

问题2 :是否有一个简单的解决方案来限制使用,具体取决于用户的角色,而没有大量重复的aspx页。

请让我知道是否需要更多信息。

菜单是用HTML在aspx表单上创建的,如下所示:

<ul id="centered">
            <li><a href='Welcome.aspx'><span>Home</span></a></li>
            <li class='active has-sub'>
                <a href='#'><span>Sales</span></a>
                <ul>
                    <li class="active has-sub">
                        <a href='#'><span>Sales</span></a>   
                        <ul>
                            <li><a href='Sales.aspx'><span>Create</span></a></li>
                            <li><a href='Sales.aspx'><span>View</span></a></li>
                        </ul>
                    </li>                        
                </ul>
            </li>

您需要将菜单ul标记为runat="server"并为其赋予唯一的ID。

<ul id="centered">
   <li><a href='Welcome.aspx'><span>Home</span></a></li>
   <li class='active has-sub'>
      <a href='#'><span>Sales</span></a>
      <ul>
         <li class="active has-sub">
            <a href='#'><span>Sales</span></a>
            <ul runat="server" id="ul_menu">
               <li><a href='Sales.aspx'><span>Create</span></a></li>
               <li><a href='Sales.aspx'><span>View</span></a></li>
            </ul>
         </li>
      </ul>
   </li>
</ul>

在这里,我更改为<ul runat="server" id="ul_menu">

现在,您可以使用此ID ul_menu并根据用户角色从后面的代码中添加项目。 例如 -

protected void Page_Load(object sender, EventArgs e)
{
    PopulateMenu();
}

private void PopulateMenu()
{
    string role = "B";//You can get the role of logged in user from membeship
    StringBuilder txt = new StringBuilder();
    if (role == "A")
    {
        txt.Append("<li><a href='Sales.aspx'><span>Create</span></a></li>");
    }
    if (role == "B")
    {
        txt.Append("<li><a href='Sales.aspx'><span>View</span></a></li>");
    }
    ul_menu.InnerHtml = txt.ToString();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM