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

时间:2016-01-07 09:12:25

标签: c# html asp.net visual-studio

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

我在SQL中的用户表有一个用户组列,其中普通用户Usergroup = 1,Admins用户组= 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条件检查Usergroup以区分用户类型(Normal,Admin ..等)..

任何想法?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

然后在映射或联结表中创建UserRole到表单映射。 您可以使用Repeater控件在登录页面

后显示菜单