C# 阻止特定用户组访问管理页面

本文关键字:访问 管理 用户组 | 更新日期: 2023-09-27 18:29:13

所以我制作了一个名为AdminPanel的页面.aspx我试图以一种只有特定用户组才能访问它的方式保护它。

我在SQL中的用户表有一个用户组列,其中普通用户用户组= 1和管理员用户组= 2,这就是用户的分类方式。

我可以设置页面,但我不知道如何保护它免受特定用户组#的访问,事实上我如何防止未登录的用户访问它?

一旦用户登录,我已确保创建了一个会话。

我使用3层架构,如下所示:

实体层、业务层和数据访问层,

到目前为止,我所做的登录功能如下:

string mail = Request["EmailAddress"].ToString();
            string password = Request["PassWord"].ToString();
                User newuser = new User(mail, password);

                if (UserBClass.verifyUser(newuser))
                {
                    newuser = UserBClass.login(newuser);
                    Session["User_Session"] = newuser;
                    var my = (User)Session["User_Session"];
                    if (my.Usergroup == "1")
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect member",
                                                        "alert('You Are Now Successfully Logged In!'); location.href='Default.aspx';",
                                                        true);
                    }
                    else if (my.Usergroup == "2")
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect administrator",
                                                         "alert('Welcome Admin!'); location.href='AdminPanel.aspx';",
                                                         true);
                    }
                }
                else {
                   Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect wrong credentials",
                 "alert('Incorrect Username Or Password'); location.href='Login.aspx';",
                 true);
                }
            } 

我使用 if 条件检查用户组以区分用户类型(正常、管理员等(。

有什么想法吗?

C# 阻止特定用户组访问管理页面

您可以阻止登录用户以不同的方式访问管理页面,从 web.config 或从代码隐藏。例如

   if (!Usergroup.equals("2"))
   {
        Response.Redirect("somepage.aspx");
   }

对于未登录的用户,您可以检查母版页中的会话,例如,

 if (Convert.ToString(Session["LoginId"]) == "")
 {
       Response.Redirect("somepage.aspx");
 }

用户进行身份验证后,请确保根据 Usergrour 即 admin(2(或 normalUser (1(正确设置用户的角色。然后在 web.config 文件中,使用以下配置以允许只有管理员用户访问 AdminPanel.aspx 页面。

  <location path="AdminPanel.aspx">
    <system.web>
      <authorization>
        <allow roles="admin"/>
      </authorization>
    </system.web>
  </location>

我已将FormsAuthenticationTicket与表单身份验证一起使用来标识用户。因此,在身份验证后,您可以创建此票证,并在创建时分配特定角色。以下链接可能会帮助您FormsAuthenticationTicket -

http://csharpdotnetfreak.blogspot.com/2009/02/formsauthentication-ticket-roles-aspnet.html

http://www.codeproject.com/Articles/6773/Form-Authentication-Tickets

创建一个包含表单列表的表为用户角色创建另一个表

然后在映射或联结表中创建用户角色到表单映射。您可以使用中继器控件在登录页面后显示菜单