1

我正在制作一个网站,我希望在不使用正确的登录凭据进行验证的情况下禁止管理员主页/用户主页。但我怎么能。

    protected void btn_Login_Click(object sender, EventArgs e)
    {
        if (CheckFields())
        {
            user.Employee_ID = txtEID.Text;
            user.Employee_Password = txtEPassword.Text;
            user.Role = ddlRole.SelectedItem.ToString();

            if (uc.Login(user)==true && user.Role=="Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("~/Admin/Admin.aspx");
            }
            else if (uc.Login(user) == true && user.Role == "Team Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("TeamAdmin.aspx");
            }
            else if (uc.Login(user) == true && user.Role == "Team Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("TeamMember.aspx");
            }
        }
    }

到这里它工作正常。但是当我将路径直接设置到站点的管理页面(http://mysite.com/Admin/Admin.aspx)时,它会显示管理页面的所有内容。我需要在不验证正确登录凭据的情况下禁止管理页面

4

2 回答 2

3

使用以下命令在 Admin 目录中创建一个 web.config 文件:

<configuration>
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</configuration>

如果您使用某种形式的 asp.net 身份验证,它将拒绝任何未经身份验证的用户。

于 2013-09-04T18:39:11.180 回答
1

您需要实施授权 ( http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx )。

如果您的管理页面位于只有管理员才能访问的单独文件夹中,那么您可以将 web.config 文件放在该文件夹中,并在上面的链接中描述授权部分。您可以设置此授权部分以将访问权限限制为仅属于 Admin 角色成员的用户。为了使其正常工作,您必须使用 ASP.Net 安全和授权。

或者,在 Admin.aspx 页面的 Page_Load() 方法中,您可以放置​​代码来检查用户是否是 Admins 角色的成员。如果不是,请将它们重定向到另一个页面。

我更喜欢在 .config 文件中配置页面级授权,因为它将它保存在一个地方,并允许它在未来轻松更新。

于 2013-09-04T18:38:31.057 回答