有没有一种方法可以基于条件MVC阻止某些页面(aspx)?

时间:2019-04-03 13:55:11

标签: c# asp.net security url webforms

我在系统上具有定制的身份验证,我希望某些页面(例如EditingProfile.aspx)无法通过URL导航进行访问。 如果用户被授权:按钮(例如btnEditingProfile)已启用,并将重定向到EditingProfile.aspx。 是未授权的用户:按钮(btnEditingProfile)将被禁用。我正在寻找一种防止用户通过URL导航访问EditingProfile.aspx的方法。

我正在使用的系统很旧,所以我需要一种安全的方法来保护它,而又不会干扰系统的其他方面。

MainMenu.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        //CODE
        if (!m_mainController.m_IsAutorized)
        btnEditProfile.Enabled = false;
        //MORE CODE
    }

 protected void btnEditProfile_Click(object sender, EventArgs e)
        {
            queryStrings=SOMEVALUE();
            string QueryString = QueryStringEncrypter.GetEncryptedQueryString(queryStrings);
            Response.Redirect("ProfileDetails.aspx?" + QueryString, false);
        }

2 个答案:

答案 0 :(得分:0)

我认为,每个用户都应该有一个登录会话以了解其权限。 https://www.codeproject.com/Articles/21474/Easy-way-to-create-secure-ASP-NET-login-using-Sess

答案 1 :(得分:0)

按照蒂姆·阮的建议,我做了以下事情:

在我添加的MainMenue.aspx中

   protected void Page_Load(object sender, EventArgs e)
{
    //code        
    if (!m_mainController.m_IsAutorized)
    btnEditProfile.Enabled = false;
    Session["url"] = Request.UrlReferrer.AbsoluteUri.ToString();
   //more code
}

在EditingProfile.aspx中:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["url"] != null)
            {
                Response.Redirect(Session["url"].ToString());
            }
            //code
         }

没有其他改变。代码以我想要的方式运行,因此我认为id可以在有人需要时更新此问题。