判断用户是否登录,阻止直接在地址栏输入网址访问!
web.config配置
<authentication mode="Forms"> //验证模式
<forms loginUrl="login.aspx"></forms> //跳转到的页面
</authentication>
<authorization>
<deny users="?"/> //拒绝匿名用户
</authorization>
登录之后退出,发现此时在浏览器里直接输入地址可以直接跳转
原因:退出时session没有清空
解决方法:
session["user"]=null; //把名为user的session值设为null;
Session.Remove("user"); //删除名为user的session
this.Response.Redirect("login.aspx") //之后跳转到登录页面;
登录时如果要判断session分配权限,就把session设为null面不是remove
到这里发现还是可以直接通过输入地址直接访问,
原因:浏览器缓存
解决方法:
if (!IsPostBack)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);//阻止浏览器记录缓存
//以下是判断session是否为空,如果为空则跳转到登录页面
if (Session["user"] == null || Session["user"].ToString() == "")
{
this.Response.Redirect("login.aspx");
}
这样就可以防止直接在访问某个页面了
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
//判断是否为空,如果为空跳转到登录页面
if (Session["user"] == null || Session["user"].ToString() == "")
{
this.Response.Redirect("login.aspx");
}
else
{
//分配权限,如果不是管理员将一些功能禁用
string leixing = Session["leixing"].ToString(); //获取session的值
if (leixing != "管理员")
{
hlkadduser.Visible = false;
hlkusermess.Visible = false;
usermanage.Visible = false;
sendyingjian.Visible = false;
fasongjilu.Visible = false;
sendjilu.Visible = false;
}
else
{
Label3.Visible = false;
Label4.Visible = false;
messgae.Visible = false;
}
username.Text = Session["user"].ToString();
bind();
}
}
}
//数据绑定
public void bind()
{
try
{
string jifang = Session["jifang"].ToString();
DataSet ds = DBvisit.yjmanagedb.message(jifang);
int count = ds.Tables[0].Rows.Count;
messgae.Text = count.ToString();
}
catch (Exception ce)
{
Console.Write(ce.Message.ToString());
}
}
//退出将名为user的session设为null;
protected void lbtnclose_Click(object sender, EventArgs e)
{
//Session.Remove();
Session["user"] = null;
this.Response.Redirect("login.aspx"); //跳转页面
}
}