简体   繁体   中英

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

Issue : Using roles that I have created in my database, I want to be able to limit use for specific users depending on that users role.

Information : I am not using an MVC approach, only empty .aspx pages that I have wired up through to my database to show information etc. Provided are images of tables that are holding the role/user information in my database Roles , Users , Role/User . Ideally I want to remove items from my menu depending on which role the user is in. So lets say the user is in the role "Worker" they will only see 2 menu "controls" or "buttons" on the aspx page menu.

Attempted solution : On the landing page after a user has logged in, the Page_Load method checks to see which role the user is in and sends them to the appropriate page. The issue with this solution is that I have to create duplicates for every page depending on which role the user is in.

Question : How can I edit the HTML in a aspx webform using the c# code behind.

Question 2 : Is there a simple solution to limit use depending on a user's role without have a ton of duplicate aspx pages.

Please let me know if there is more information needed.

The menu is created in the HTML on the aspx form like this:

<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>

You need to mark you menu ul to runat="server" and give it a unique 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>

Here I have change to <ul runat="server" id="ul_menu">

Now you can use this id ul_menu and add item to this from code behind on the basis of role of the user. for example --

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();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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