我不应该允许user1通过更改URL来访问user2

时间:2012-11-16 10:34:41

标签: c# asp.net

我正在使用表单身份验证及其wrking罚款。但是在user1登录之后,他将显示user1.aspx页面,但是如果他在登录后更改了url,他也可以访问user2页面,这也不应该发生,所以我已经进行了更改像这样的web配置文件

<authentication mode="Forms">
      <forms
        name=".LOGIN" 
        cookieless="UseCookies"
        loginUrl="LOGIN.aspx"/>

    </authentication>

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


  <location path="~/CabScheduler/User1/User1.aspx">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>



  <location path="~/CabScheduler/User2/User2.aspx">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>




  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

在登录页面 -

 protected void btnLogin_Click(object sender, EventArgs e) 
        { 
            bool validLogin = false; 

            validLogin = IsValidUser(txtUserName.Text.Trim(), txtPassword.Text.Trim());
            int UserId = FindRoleId(txtUserName.Text.Trim(), txtPassword.Text.Trim());
            if (validLogin) 

            {       
                FormsAuthentication.RedirectFromLoginPage(txtUserName.Text.Trim(), false); 
                if(UserId ==1)
                    Response.Redirect("~/User1/User1.aspx");
                else
                    Response.Redirect("~/User2/User2.aspx");
        }


            else 

                lblInformation.Text = "Incorrect Login Information"; 
        } 

告诉我我错过了什么或做错了什么。 非常感谢你!

3 个答案:

答案 0 :(得分:0)

将userId存储在Session中,并检查该ID是否对这些页面上的当前页面有效。

Session["userId"] = UserId;

在页面上:

if (Session["userId"] != xxx)
    Redirect("somewhere");

请填写适当的数值。

答案 1 :(得分:0)

User1.aspx OnLoad事件检查中,当前用户是否经过身份验证以访问此页面并进行相应处理。

在User1.aspx onLoad事件检查:

 if(UserId !=1)
  {
    //redirect to login page
  }

答案 2 :(得分:0)

尝试以下

 <location path="~/CabScheduler/User2/User2.aspx">
    <system.web>
      <authorization>
                <allow users="user2" />
                <deny users="*, ?" />
      </authorization>
    </system.web>
  </location>


    <location path="~/CabScheduler/User1/User1.aspx">
        <system.web>
            <authorization>
                <allow users="user1" />
                <deny users="*, ?" />
            </authorization>
        </system.web>
    </location>