所以我创建了一个名为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 ..等)..
任何想法?
答案 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控件在登录页面
后显示菜单