小弟还是以前的程序问题  为了防止用户在没有登录的时候,自己在主页地址栏里可以输入其他网址能随便进入后台的地址,我做了一个session.Add["Userid",txtName.Text]作为用户登录后保存状态可以浏览网页,但是现在存在另一个问题就是普通浏览者和管理员都登陆以后可以在地址栏里输入网址来进行访问,但是普通浏览这登录后也可以访问管理员才能进入的页面,请问这里应该怎样判断区分谁是浏览者和管理员来设置权限不让普通浏览者去访问管理者的界面?谢谢!

解决方案 »

  1.   

    我也知道设置权限和级别数据库里已经有了区分普通浏览者和管理员FLAG的字段,0为普通会员1为管理者,但是怎么写不知道了。郁闷咧
      

  2.   

     这个问题应该是你数据库的问题 普通浏览用户和后台管理员一般分开成两张表 或者 在建一个分类表 标明TYPE其次 后台登陆的保存使用的session和普通浏览用户的session 应该用不同的值来保存额
      

  3.   

    把用户对应的权限 给一个 session 然后判断是0还是1
      

  4.   

    读取session["userid"]的值来判断他是那个级别的,不允许访问就直接response.end或跳转。建议session里直接放置flag
      

  5.   

    使用管理员与普通浏览者区分的数据进行if else 就可以了
      

  6.   

    呵呵再加个区分用户的session值,登录时赋值,在该管理员访问的页面时候判断那个值是不是属于管理员
      

  7.   

     protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Userid"] == null && Session["Flag"]=="1")
            {
                Response.Redirect("UserLogin.aspx");
               
            }
                   
            
             if (!IsPostBack)
            {
                getData();
            }
        }
    我这么写了 真的是没用该进还直接进。。
      

  8.   

    你的逻辑写错了 if (Session["Userid"] == null || Session["Flag"]=="0")
      {
      Response.Redirect("UserLogin.aspx");
        
      }
      

  9.   

    但是&& 和||我都试过了还是不行都可以直接在地址栏里直接输入地址通过,我都郁闷咧
      

  10.   

    在登陆界面里写个session["admin"]="1"
    在其他页面中判断session["admin"]是否等于"1"如何等于为正常,否则为非法!~!~
      

  11.   

     string UserID;
            string UserPwd;
                    UserID = txtName.Text.Trim();
            UserPwd = txtPass.Text.Trim();
           
            string sSqlFlag=string.Format(@"select flag from Master where M_id='{0}'",txtName.Text);
            string sFlag= DbServer.GetFlag(sSqlFlag, "Flag");        string sSqlReg = string.Format(@"select RegNumber from Master where M_id='{0}'", txtName.Text);
            string sReg = DbServer.GetFlag(sSqlReg, "RegNumber");
            string sSql = "select * from Master where M_id='" + UserID + "' and M_PassWord='" + UserPwd + "'";
            DataTable table = DbServer.GetTable(sSql);
            if (table.Rows.Count > 0)
            {
                if (sReg == "0")
                {
                    Session.Add("userId", txtName.Text);//关键地方,保存登录的帐号
                    
                    Response.Redirect("UserPwdEdit.aspx");
                }           else if (sFlag == "0" && sReg=="1")
                {
                    Session.Add("userId", txtName.Text);//关键地方,保存登录的帐号
                   
                    Response.Redirect("MasterAnswer.aspx");            }
                else if (sFlag == "1" && sReg=="1")
                {
                    Session.Add("userId", txtName.Text);//关键地方,保存登录的帐号
                   
                    Response.Redirect("UserQuestion.aspx");
                }
                else
                {
                    Session.Add("userId", txtName.Text);//关键地方,保存登录的帐号
                   
                    Response.Redirect("UserLogin.aspx");
                }
                            //使用这个Session的地方是,每个PAGE页面的PAGE_Load事件中         
            }
            else
            {
                Response.Write("<script language='javascript'>alert('账号或密码错误请重新输入~!.');</script>");
            }
    这个是登陆界面 你让我在哪里加?
      

  12.   

    你根本没讲flag加入到session嘛,之前的判断当然不成立你的代码逻辑很不正常啊,为什么登陆失败也要写session值?flag到底0是用户还是管理员?sReg代表什么意思?
      

  13.   

    我知道你的意思登陆失败我没加session啊
    sreg是一个初始注册的问题如果他是0就需要他修改下密码才能登陆 如果不是就可以直接登陆
    我应该把加哪里session这个不是很懂是一个朋友帮我写的 后来我发现这个错误就不会写了 那个朋友现在出差了暂时联系不到 所以才问 我对session懂的很少 是他教我编程的 还没学那么多呢- -!不好意思
      

  14.   

    你这个朋友看来也是初学啊你把中间那段改成这个            Session.Add("userId", txtName.Text);//关键地方,保存登录的帐号
                Session.Add("Flag", sFlag);            if (sReg == "0")
                {
                    Response.Redirect("UserPwdEdit.aspx");
                }
                else if (sFlag == "0" && sReg == "1")
                {
                    Response.Redirect("MasterAnswer.aspx");
                }
                else if (sFlag == "1" && sReg == "1")
                {
                    Response.Redirect("UserQuestion.aspx");
                }