登陆时把用户名保存在Session里,每个页面打开后在Page_Load()事件中检查Session,发现相应变量为空就跳回登陆界面。

解决方案 »

  1.   

    用Forms登录验证。修改web.config文件如下:
    <authentication mode="Forms">
    <forms name="myapp" path="/" loginUrl="login.aspx" protection="All" timeout="30">
    <credentials passwordFormat="Clear">
    <user name="one" password="one" />
    <user name="two" password="two" />
    <user name="three" password="three" />
    </credentials>
    </forms>
    </authentication>
    <authorization>
    <allow users="one,two,three" />
    <deny users="?" />
    </authorization>
      

  2.   

    其实你也可以在Session中放入一个值,然后祖先页面里来判断这个值的情况进行导向即可。
      

  3.   

    用response集合来if上次的页面是否是本网!
      

  4.   

    vb不会写!!
    说一下思路,先用SESSION把用户名记录下来在登陆页面!
    然后在每个页面对用户名进行检查,如果是空用户名就让他自动跳到登陆页面,如果有用户名就按照权限显示内容!!!
      

  5.   

    一个比较彻底的解决方法,再global里用 Application_PreRequestHandlerExecute() 函数,可以在所有页面前判断用户的身份。感兴趣的话,可以贴出代码。
      

  6.   

    Session COOkie 或者配置web.config
      

  7.   

    我的方法是用session判断,然后用一个类重新定义Page_Load(),在里面写判断和跳转的
    过程,然后其他的每一个页面都继承这个类,当然,登陆页不用继承
    dawave(),能否贴出你的代码?
      

  8.   

    论坛上找到的,希望对你有帮助
    以前寫asp網頁時校驗用戶訪問網頁權限時必須在每個asp網頁第一行寫一個inclue語句,包含文件的功能是校驗用戶訪問網頁權限,而在asp.net中只需在一個配置文件中加上inclue語句,之後所有aspx網頁都會執行inclue語句包括的代碼,我是問這個配置文件名是什麼?
    我在Global.asax文件試過,但不起作用.
    如果定義類的話,那在每個文件還是要加入一些代碼,而我說的那種方法不用對aspx文件做任何修改就可以執行包含文件中的功能.
    我是從去年9月份微軟技術大會里知道asp.net有這個功能,但我那時候還是用其它語言寫數據庫管理程序,所以沒留意,現在要用的時候又記不起來了.
    do it in global.asax, in HttpApplication's event handlers, or write some HttpModule
    for authentication purpose, you should be using windows integration or forms-based authentication in ASP.NET, but if you insist, try
        void Application_AcquireRequestState(Object sender, EventArgs E) 
        {
    string[] s = HttpContext.Current.Request.Url.Segments;
            if (s[s.Length-1] != "login.aspx" && (Session["login"] == null || Session["login"] ==""))
    Response.Redirect("login.aspx");
        }
      

  9.   

    其实.net已提供此功能,在web.config中,用forms验证,如同gj0001 所说
     第二种方法,就是后面wieset等所说的
    你可以让你的每个网页都继承于一个page基类,在page基类的page_load中写判断和跳转的代码,如if( Session["user"]==null ) Redriect("login.aspx");
      

  10.   

    2002pine(我学习,我存在) 已经把问题都解决了
      

  11.   

    关于gj0001(阿江) 的方法能用但不实用,因为用户可能不断增加或删除,我不能把所用的用户名都写在语句<allow users="one,two,three" />中,因为用户名是动态增减的。用session变量又有一个时间和安全的问题。
      

  12.   

    我觉得标准的方法正如gj0001所说,不过确实不实用,但该一下就好了:
    <authentication mode="Forms">
    <forms name="login" loginUrl="Login.aspx"></forms>
    </authentication> <authorization>
            <deny users="?"></deny>
            <allow users="*" /> 
    </authorization>
    请Fczllc比较一下二者的区别。
    这样之后,在Login.aspx页面中验证用户身份,如果有该用户存在,且密码正确,则使用:
    FormsAuthentication.RedirectFromLoginPage("", False)
    然后,转向下一个页面。
    这样,当用户不经login.aspx页面时,会自动转向Login.aspx
      

  13.   

    代码:protected void Application_PreRequestHandlerExecute() {
    User user = (User) Session.StaticObjects["user"];
    if (theFile!="login.aspx" && theFile!="logout.aspx") {
    if (!user.CheckPermission(Request.Path))
    Response.Redirect(thePath+"/login.aspx?ErrorMessageKeyword="+user.LastError
    +"&FromPage="+Request.Path);
    }
    }这是最初的版本,实现基本的检查,很简单,但是可用的,它这个函数放在global里,这样你所有的网页都必须经过它了(我把login,logout除外了)。好处是,你不用在任何网页中关心权限问题,这里已经完全解决了。没有session检查,没有include,网页自己甚至不知道检查的过程。注意!下面的思路很重要:所谓权限检查其实就是用户有没有权力浏览某个网页,我们不从网页自己的角度出发,太多了,容易漏,从用户的角度看就是他有没有权力,用户自己最清楚,用户是分组的,他的权力由他所在组的权力决定,这样就简单多了。组一般也就几十个。所以:在global里申明一个session级的用户,用户从浏览第一个网页看十就有了身份(客人)。客人的权力,他自己知道user.checkpermission(url).登陆以后身份变了,但是还是他自己清楚,一样的函数user.checkpermission(url).这个思路和实现基本是自己原创的,欢迎大家探讨。
      

  14.   

    在web.config里配置是最佳的,上面已经说了
      

  15.   

    我常用这个方法
    在你内部一个页面地址写入
    vb的写
    Imports System.Web.Security
    c#的写
    using System.Web.Security;
    就是在每个后台代码的开头登录页面不要写啊
    道理就是Imports System.Web.Security可以产生cookies
    你可一看看msdn呀!!!如果退出就可以写
    System.Web.Security.FormsAuthentication.SignOut();
    Response.Redirect("index.aspx");
      

  16.   

    我认为这个方法比较容易理解:
    if ( Session("user")<>"用户名" ) then
    Redriect("login.aspx")
    end if
      

  17.   

    再次感谢所有的人,特别是dawave()提供的方法我正在试,是非常好的思路。