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 条件检查用户组以区分用户类型(正常、管理员等(。
有什么想法吗?
您可以阻止登录用户以不同的方式访问管理页面,从 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
创建一个包含表单列表的表为用户角色创建另一个表
然后在映射或联结表中创建用户角色到表单映射。您可以使用中继器控件在登录页面后显示菜单