如果登录成功则
Session["UserName"]="admin";我用原来asp的思路建立一个文件checklogin.aspx在Page_Load里面判断
Session是否为空,如果空则返回登录页。然后每个页面包含,出现一个页面只能有一个Page指令错误。
删掉checklogin.aspx的page行也不行。请问大家是如何制作的?有的人说用用户控件,我不知道怎么用?
如果按包含的方法应该如何使用?

解决方案 »

  1.   

    asp.net有更多的验证方式,参考
    http://chs.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/formsauth.aspx
      

  2.   

    http://msdn.microsoft.com/library/CHS/cpguide/html/cpconASPNETAuthentication.asp
      

  3.   

    http://msdn.microsoft.com/library/CHS/cpguide/html/cpconSimpleCookieAuthentication.asp
      

  4.   

    你可以直接写在类里面啊,不用这个public void myIsLogin(Page myPage)
    {
    if((Session["UserName"] + "a") == "a")
    {
    this.response.redirect("/login.aspx");
    this.response.end();
    }
    }调用的时候,把页面this传递进去,它就自动判断了.(上述语句大意如此,语法自行修改)
      

  5.   

    public bool chkadmin()
    {
    if(Session["admin"].ToString()+"a"=="a")
    {
    return false;
    }
    else
    {
    return true;
    }
    }
      

  6.   

    还是不明白。如果按照这样写,我该怎么做
    public void myIsLogin(Page myPage)
    {
    if((Session["UserName"] + "a") == "a")
    {
    this.response.redirect("/login.aspx");
    this.response.end();
    }
    }
    这里调用的时候怎么调用,这个函数应该放在那里?在其他页面如何调用?
    this什么意思,Page myPage如何理解?
      

  7.   

    最好不要这样写,不然以后增加一个页面就要加一行代码!
    用.net提供的Forms验证方式比较好,
      

  8.   

    用Forms验证,没做成功!
    按照这个:
    http://chs.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/formsauth.aspx
    作不行呀。谁能告诉我详细的原理
      

  9.   

    这里调用的时候怎么调用,这个函数应该放在那里?在其他页面如何调用?
    this什么意思,Page myPage如何理解?
    -----------------------------
    楼主,你基础知识太缺乏了.
    此函数你可放在类中实现.为简单起见,你可先放在页面中,然后这样调用 
    this.myIsLogin(this);c#
    Me.myIsLogin(Me);这个this就是指的当前页面,在VB.NET里面要写做Me,Page myPage这个是定义一个当前页面,名字叫myPage,如果在vb.net里面应当写做 myPage as Page
      

  10.   

    我在login.aspx.cs文件里设置了函数
    public void myIsLogin(Page myPage)
    {
    if((Session["UserName"] + "a") == "a")
    {
    this.Response.Redirect("/login.aspx");
    this.Response.End();
    }
    }
    在其他页面(MemberManage.aspx.cs中)使用:
    ...Page_Load()
    if(!Page.IsPostBack)
    {this.myIsLogin(this);}
    编译运行提示
    zp.admin.MemberManage不包含对myIsLogin的定义,我应该如何引用上面的函数,命名空间?
    希望不要对我失去耐心
      

  11.   

    Forms 身份验证通常指这样一个系统,在该系统中使用 HTTP 客户端重定向将未经身份验证的请求重定向到 HTML 窗体。如果应用程序需要在登录时通过 HTML 窗体收集自己的用户凭据,那么选择 Forms 身份验证就很好。用户提供凭据并提交该窗体。如果应用程序对请求进行身份验证,系统会发出一个 Cookie,在其中包含用于重新获取标识的凭据或密钥。随后发出在请求头中具有该 Cookie 的请求。ASP.NET 事件处理程序使用应用程序指定的任何验证方法对这些请求进行身份验证和授权。注意,Forms 身份验证经常用于个性化服务,其中可以为已知用户自定义内容。在某些情况下,身份验证不是关键,而标识才是关键,所以在持久性的 Cookie 中只需存储用户名就足够了,然后使用该 Cookie 来访问用户的个性化信息。
      

  12.   

    只要判断 Session["userName"] == null 就可以判断出是否登陆了呀。干吗要加个a呢?
      

  13.   

    Session["IsAdmin"].ToString()=="admin"
    我刚刚搞好的
      

  14.   

    可否针对我的问题进行解答?
    我是菜鸟,Session默认应该是个Object,如果有值赋给它则变成了字符串形式了,这时候使用Session["UserName"]==null可能会出现错误。
    +a是让它使用字符串形式进行比较吧。我的问题不是这个呀????我现在到底该用哪种方式验证登录???使用Forms我也没成功,具体如下(简略的写代码):
    Login.aspx.csusing System.Web.Security;//这个一定要加
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    ....数据库操作
    if(dr.Read())
    {
    conn.Close();
    FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
    }
    else{
    conn.Close();
    Response.Write("<script language='javascript'>alert('对不起,用户名或密码输入错误!')</script>");
    }web.config大致如下:
    <authentication mode="Forms">
    <forms name="AuthCookie" loginUrl="admin/Login.aspx" protection="All" timeout="30" />
    </authentication>
    <authorization>
    <allow users="?" /> 
    </authorization>难道这样就可以了吗?编译运行不报错,数据库方面没问题。我不通过登录也可以到其他页面呀(页面并不像预期的调转到登录页面),需要(会话)验证的页面是否需要加点东西?
      

  15.   

    用 用户控件的时候和用include时是一样的,,区别是把最上面的@page 改成@control 
    比如<%@ Control Language="VB" %>
      

  16.   

    我现在就这么用的:
    if(Session["studentID"]!=null)
    {  
        //#@#@%$
        UserName.Text = student.StudentName;
    }
    else 
        Response.Redirect("Student_Login.aspx");
    没有问题呀^_^
    另外赋值我用Session["studentID"]="2005081327";
    取值我用Session["student"].ToString();
    若要转成int型用:int.Parse(Session["student"].ToString();)
    希望你能用得上。
    另外,我认为session验证比Form验证更灵活一些。
    Form验证用的是cookie,可以做到在一段时间内免登录的,如果系统要这样的功能用Form验证最好。而且,Form验证可以区分角色,但得在Global.asa中写Application_AuthenticateRequest;要用session验证区分角色还得再设一个session["userrole"],所以根据系统的需要自已选择吧。
      

  17.   

    OK!
    forms验证通过了。我想知道session验证怎么弄?我是asp转来的。
    在Login.aspx.cs文件里写了个
    public void myIsLogin(Page myPage)
    {
    if((Session["UserName"] + "a") == "a")
    {
    this.response.redirect("/login.aspx");
    this.response.end();
    }
    }
    在其他页面如何调用?
    怎么把myIsLogin(page)在其他cs文件里也可以正常使用?
      

  18.   

    在C#中直接引用这个类的命名空间。
    using 类名;(C#)
    imports 类名(VB.net)
    然后在下面就可以引用类中的函数了