判断用户是否登录,阻止直接在地址栏输入网址访问!

来源:互联网 发布:华云数据许广彬老婆 编辑:程序博客网 时间:2024/05/17 04:24

判断用户是否登录,阻止直接在地址栏输入网址访问!
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");    //跳转页面

    }

}