我正在使用表单身份验证及其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";
}
告诉我我错过了什么或做错了什么。 非常感谢你!
答案 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>