假设ASP。NET里登陆的时候验证页面
http://www.xxx.com/admin/login.aspx
登陆成功后跳转到后台管理主页面
http://www.xxx.com/admin/index.aspx,跳转到这个页面以后就可以访问所有的后台页面了
但是!!:::如果我没登陆就直接用连接2的话应该要提示错误,请问大家这个禁止直接访问的代码怎么样实现比较好?比较正式。谢谢了
在线等待您的回复

解决方案 »

  1.   

    ////////////////////////////////////////////////////////////////////////  
    //功能    :   检查用户是否已经登陆,防止直接输入url达到某个页面//传入类型:   空
    //传入参数:   空//返回类型;   bool
    //返回值  :   true  or  false   
    ////////////////////////////////////////////////////////////////////////
    public bool IsLogin ()
    {
    HttpContext ctx= HttpContext.Current;
    try
    {
    if ((ctx.Request.Cookies["username"]  == null || ctx.Request.Cookies["username"].Value == "") &&
       (ctx.Request.Cookies["userpassword"]  == null || ctx.Request.Cookies["userpassword"].Value == "") && 
       (ctx.Request.Cookies["power"] ==null || ctx.Request.Cookies["power"].Value == "")) 
             return false;
    else

    return true;
    }
    catch(Exception ex)
    {

    return false;
    }//endcatch        
    }
      

  2.   

    formload里面直接if(IsLogin==false)
    {
       登陆失败....
    }
      

  3.   

    如果到没张页面去验证那不是很麻烦啊
    我以前都用COOKIE的啊
    烦死了
      

  4.   

    先谢谢 junzhang4008(不会飞的猪) 
    再顺便问一下大家另外个问题:
    防止SQL注入的代码呢,就是连接不能含有非法的字符形式
    谢谢
      

  5.   

    用HttpModule即可。??
    能说的具体点么?
    谢谢拉大哥
      

  6.   

    参阅
    IHttpModule 接口
    你的验证代码怎么写的?
      

  7.   

    验证代码是在存储过程中实现的!
    如下:
    CREATE PROCEDURE  AdminLogin@AdminName varchar(50),
    @AdminPassWord varchar(50),
    @AdminID int output,
    @AdminAccess varchar(50) outputAS select * from Admin where @AdminName=AdminName
    if(@@RowCount<1)
    begin--------------------------1
    set @AdminID=0
    set @AdminAccess='用户名不存在'
    end-----------------------------1
    else
    begin----------------------2
    select * from Admin where @AdminName=AdminName and @AdminPassWord=AdminPassWord
    if(@@RowCount<1)
    begin-------------------3
    set @AdminID=0
    set @AdminAccess='用户名或密码错误' 
    end--------------------3
    else
    begin------------------4
    select  @AdminID=AdminID from Admin where @AdminName=AdminName and @AdminPassWord=AdminPassWord and AdminAccess='1'
    if(@@RowCount<1)
    begin------------------5
    set @AdminAccess='用户名密码错误或者您的权限已经被取消' 
    end---------------------5
    else
    begin------------------6
    set @AdminAccess='Access'
    end---------------------6
    end---------------------4
    end------------------------2
    GO
      

  8.   

    最简单的方法就是用COOKIE或者SESSION,如果你在FORMLOAD里面做也很简单啊,你在FORMLOAD里面写if(!IsPostBack)
    {
    //验证代码
    ............
    }
      

  9.   

    防止SQL注入的代码呢,就是连接不能含有非法的字符形式==================================================
    直接把非法字符替换掉就可以了'过虑非法字符
    ParaValue = replace(ParaValue,"'","") 
    ParaValue = replace(ParaValue,"select ","")
    ParaValue = replace(ParaValue,"insert ","")
    ParaValue = replace(ParaValue,"delete ","")
    ParaValue = replace(ParaValue,"count(","")
    ParaValue = replace(ParaValue,"drop table ","")
    ParaValue = replace(ParaValue,"update ","")
    ParaValue = replace(ParaValue,"truncate ","")
    ParaValue = replace(ParaValue,"asc(","")
    ParaValue = replace(ParaValue,"mid(","")
    ParaValue = replace(ParaValue,"char(","")
    ParaValue = replace(ParaValue,"xp_cmdshell","")
    ParaValue = replace(ParaValue,"exec master","")
    ParaValue = replace(ParaValue,"net localgroup administrators","")
    ParaValue = replace(ParaValue," and ","")
    ParaValue = replace(ParaValue,"net user","")
    ParaValue = replace(ParaValue," or ","")