在ASP.NET中,注册的用户信息存在sql server数据库中,怎么让用户只能通过登录界面进入其他页面(防止直接输入其他页面的网址直接进入),高手指点下!

解决方案 »

  1.   

    建一个类,这个类继承web.ui.page.这个类判断session是否有值 (登录页给session赋值)所有需要“防止直接输入页面网址的页”都继承自这个类。
    如下:
    checkLogin.cs
    public class checkLogin :System.Web.UI.Page
    {
    public checkLogin()
    {
            
    }    protected override void OnLoad(EventArgs e)
        {
            this.checkuser();
            base.OnLoad(e);        
        }    private void checkuser()
        {
            if (this.Session["userid"] == null || this.Session["userid"].Equals(""))
            {
                Response.Redirect("redirect.htm");
            }
        }
    }需要验证是否登录的页继承这个类:如下,
    public partial class Manage_setMode : checkLogin
      

  2.   

    恩,也可以在其它页面的Page_Load里写上当Session["XXX"]为空的话,就跳转到登录页面的语句
      

  3.   

    上面正解!!
    放在cookie里面也可以
      

  4.   

    如果有几百个页面,那是不是每个页面都得加上Page_Load里写上当Session["XXX"]为空的话,就跳转到登录页面的语句呢?
    有些不理解
      

  5.   

    用cookie比较好一点,我感觉。虽然有些浏览器不支持cookie,安全性低。毕竟cookie是基于客户端判断的,一旦页面数量很多的话,服务器负荷会变得很大,
    页面多的话,你可以单独建一个类,里面专门写cookie判断的代码,然后在需要限、制的页面进行调用就可以了。何必每页都来写cookie:)
      

  6.   

    可以在Web.config里面配置啊,我不太懂,Lz查一下这方面的资料啊
      

  7.   

    在web.config里配置一下,其他的页面就都不需要改动,是这样的吗
    网站以前没有用登陆页面,不需要验证什么,现在想要加个注册登陆的页面
    是不是只改下web.config文件,其他的页面都不用修改啊,页面很多的
      

  8.   

    web.config中配置,这个达不到要求,就自己来控制
    可以使用一楼说的BasePage类,也可以在httpmodule中控制,感觉后者更好一些。
      

  9.   

    不清楚为什么weizhuangzhi(壮志)说“web.config中配置,这个达不到要求”?难道
    <authorization>
          <deny users="?"/>
        </authorization>
      <authentication mode="Forms">
        <forms loginUrl="login.aspx" name=".MyCookie"  path="/"  protection="All" timeout="20" cookieless="UseDeviceProfile"   defaultUrl="~/Bus_Manage/BusInfo.aspx"/>
        </authentication>
    不行?反正我就这么做的,运行挺好!
      

  10.   

    楼上,你这个只对login.aspx进行验证,如果我直接在IE 中输入内页的URL,不需要登录一样可以进去,所以一楼的办法我觉得可以,当然大家也可以把session换成cookie