我在登陆的时候将用户的 名称和密码写进了Session
用户登陆以后要进行其它操作时需要将Session中的用户名、密码跟数据库中的做对比每一个页面都写验证这样有点太麻烦了,感觉应该可以写成一个函数但又不知道该怎么去写,希望大家帮我一下。

解决方案 »

  1.   

    .aspx.cs文件继承System.Web.UI.Page
    可以建一个Common类继承System.Web.UI.Page
    而.aspx.cs再继承Common
    在Common中可以放很多公共的东东
      

  2.   

    应该是先检查数据库,如果存在,再赋Session的吧?
      

  3.   

    Session中的值是验证过后才写进去的,怕不安全所以想在以后的页面中都打开检查一下。
     longhorn008(菜鸟.net) 能给出详细的代码吗?我是新手对C#不熟悉,最好是能给我一个例子我慢慢的研究一下。
      

  4.   

    Session是在服务器内存中,没这个必要了吧。
      

  5.   

    Common 类里添加
    protected bool IsLogin
    {
       get
       {
          if(session["logined"]==null)
              return false;
          return true;
             
        }
        set
        {
           session["logined"]=value;     }
    }
    protected void CheckLogin()
    {
       if(!IsLogin)
       {
         //没登陆的处理方法    }  }login.aspx.cs 继承Common,所有需要验证的都继承这个类。Page_Load 
    登陆成功后把 IsLogin=true 即可
      

  6.   

    Page_load里调用 CheckLogin()
    你可以试试
      

  7.   

    这样做只是判断了Session是否为无效数据,并没有跟数据库中的 数据做比对啊,
      

  8.   

    网上有大把的验证控件,不过,我想这个不是很安全,控件的session["aaa"]很容易知道的,如果上传一个文件到哪里,不就可以取得到session值啦。然后狂注册。
      

  9.   

    可以做一个验证登陆的页面,然后每个页面在page_load中用server.Excute去访问在那个登陆的页面用session[""]取出来的值来跟数据库比对,如果false的话就response.redirect,这样在每个页面只要增加server.Excute就可以了
      

  10.   

    可以建一个Common类继承System.Web.UI.Page
    这句话怎么实现?在新建类里面好象不能using System.Web.UI.Page
      

  11.   

    Common : System.Web.UI.Page这是我检查cookies的函数,你改一下成session的。 /// <summary>
    /// 检查Cookies,获得memStatus
    /// </summary>
    public void CheckCookie()
    {
    string tempName="";
    string tempHashKey="";
    if(Request.Cookies[CookieName]!=null)
    {
    tempName=CheckStr(Request.Cookies[CookieName].Values["memName"].ToString());
    tempHashKey=CheckStr(Request.Cookies[CookieName].Values["memHashKey"].ToString());
    }
    if(tempName==string.Empty||tempHashKey==string.Empty)
    {
    Logout(false);
    }
    else
    {
    this.Instance();
    dbo.SqlCmd="SELECT Top 1 mem_ID,mem_Name,mem_Password,mem_salt,mem_Status,mem_LastIP,mem_lastVisit,mem_hashKey FROM blog_member WHERE mem_Name='"+tempName+"' AND mem_hashKey='"+tempHashKey+"'AND mem_hashKey<>''"; 
    IDataReader dr=dbo.dataReader();
    if(dr.Read())
    {
    UserID=dr["mem_ID"].ToString();
    memName=Request.Cookies[CookieName].Values["memName"].ToString();
    memStatus=dr["mem_Status"].ToString();
    //this.Alert(memStatus);
    }
    dbo.ResetDB();
    dbo.CloseDB();
    }

    }
      

  12.   

    我用的是public class Usercheck
    {
    public static void CheckUser(System.Web.UI.Page page)
    {
    string UserID,Userpas,User_lock=null;
    UserID = (string)page.Session["UserID"];
    Userpas = (string)page.Session["Userpas"];
    User_lock = (string)page.Session["User_lock"]; 
    SqlConnection conn = new SqlConnection (ConfigurationSettings.AppSettings["Connstr"]);
    conn.Open();
    string strsql = "select UserID,Userpas,ID,User_lock from Admin where UserID = '" + UserID + "' and Userpas  = '" + Userpas + "' And User_lock='0'";
    SqlCommand cmd = new SqlCommand(strsql,conn);
    SqlDataReader dr = cmd.ExecuteReader();
    if(dr.Read())
    {
    if(UserID == (string)dr["UserID"])
    {}
    if(Userpas == (string)dr["Userpas"])
    {}
    }
    else
    {
    page.Server.Transfer("login.aspx?logout=true");
    }
    dr.Close();
    conn.Close();

    }
    }
    不知道这种方法是否得当