我正在使用C#创建一个asp.net网站,我在slq服务器上有一个带有表Users(id, username, password, isAdmin)
的数据库。 isAdmin
列int
的默认值为0
,因此,如果该用户为管理员,则为isAdmin = 1
其他isAdmin = 0
。
我在网站上有一个登录表单,当用户登录时,它会创建Session("admin")
或Session("user")
,具体取决于isAdmin
值。
那么,我如何限制Session("user")
到admin.aspx
页面以及网站上传文件夹的访问权限?
我不想在IIS中添加角色管理,因为管理员可以让其他用户加入管理员(将isAdmin
更新为1
)
感谢。
答案 0 :(得分:3)
不要保持标准用户和& admin在单独的会话变量中。而是创建一个映射到User表的类,并以通用方式在其中存储用户信息。该类的一个属性是.isAdmin
(整数或偶数布尔值)。然后你可以简单地查看“admin.aspx”
UserInfo objUserInfo = (UserInfo)Session("user");
if (objUserInfo.isAdmin == 0) {
Response.Redirect("User.aspx");
}
答案 1 :(得分:2)
这个逻辑中的东西:
登录后,首先在session var中保存用户角色。 然后在受限页面的page_load中,检查用户的角色,如果他不是管理员,则将其重定向到使用管理员帐户重新登录。protected void Page_Load(object sender, EventArgs e)
{
if(session["role"].ToString().compareTo("admin")==0)
{
//load page stuff
}
else
{
Response.Redirect(your login page);
}
}
答案 2 :(得分:0)
关闭IIS中的目录浏览。在web.config中添加此项以防止用户浏览文件夹。这将在IIS 7 +
中起作用<configuration>
<location path="Secured">
<system.webServer>
<directoryBrowse enabled="false" />
</system.webServer>
</location>
</configuration>