关于网友提出的“如何解决问题 网址问题,请问如何解决”问题疑问,本网通过在网上对“如何解决问题 网址问题,请问如何解决”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:如何解决问题 网址问题,请问如何解决描述:
做了一个网站,网站的后台管理页面有很多,例如admin.aspx是后台的登陆页面,等进入以后后面有1 2 3 3个页面,
现在发现一个问题,就是 一个没有权限的人知道后台管理页面的地址,直接在地址栏中输入也可以访问,请问怎么弄,必须让他通过admin.aspx这个页面才可以访问到后3个,直接输入已知的网址访问 让他现实不出来或者报错。
解决方案1:
session控制。
解决方案2: 熟的话後台管理自己写一个权限控制模块,
不熟的话用“窗体身份验证”
修改web.config
<>
loginUrl="login.aspx"
timeout="30" path="path">
权限的问题,建议楼主的页面都继承一个页面基类,在基类里面对登陆人进行检测,如果是错误,跳转到错误页面
解决方案4:最好采用“窗体身份验证”
解决方案5: 这是我自己写的验证 给你参考下
if (!Page.IsPostBack)
{
if (Session["userid"] != null || Session["username"] != null)
{//获取登陆页面的值,如果不为空,防止直接从IE地址栏访问该页
string roleid=Session["roleid"].ToString();//获取登陆帐号的角色ID
string rolename = string.Empty;//声明rolename用来存储角色名
string strUserName = Session["username"].ToString();//读取登陆页面的用户名
//int userid = Users.GetUesrIdByUserName(strUserName);
int userid = Convert.ToInt32(Session["userid"]);//读取登陆页面的用户ID
if (Users.ValidateUserLogin(userid, strUserName))//调用验证方法再次验证用户登陆输入的信息是否正确
{
if (roleid == "1")//如果用户登陆输入的信息都正确,那么就判断用户的角色ID,如果是1就表明是超级管理员
{
lblShowMessage.Visible = true;
rolename = Users.GetRoleNameByRoleID(Convert.ToInt32(roleid));//通过角色ID来获取角色名
lblShowMessage.Text = string.Format("{1}|{2}", userid, strUserName, rolename);
}
else
{//如果不是超级管理员,就转到相关页面
lblShowMessage.Visible = true;
rolename = Users.GetRoleNameByRoleID(Convert.ToInt32(roleid));
lblShowMessage.Text = string.Format("{1}|{2}", userid, strUserName, rolename);
}
}
else
{//如果验证没有通过,就转到登陆页面
Response.Redirect("Adminlogin.aspx");
}
}
else
{//如果获取不到Session的值,就转到登陆页面
Response.Redirect("AdminLogin.aspx");
}
}
}
解决方案6:
在 page_load 的时候判断是否有权限,没有
可以
导向另外一页
Response.Redirect("default.aspx");
结束输出
Response.End();