问题一:在asp.net 中如何防址在ie地址栏中直接输入访问程序主页面的地址,从而绕开登陆界面,我用SEssion,发现它很容易丢失,大家有好的方法吗??问题二::在asp.net 如果程序发生异常,如何跑转到友好的错误信息页面,如何显示错误信息??请高手给与指点,在这给分了,谢谢大家

解决方案 »

  1.   

    防止绕开登陆 session 是比较主流的用法, 你可以尝试着从怎么不让session丢失入手,问题2  一般在有异常的地方加一个try  catch  你可以再catch后面吧异常显示出来,随便用弹出框呀 还是跳转一个错误页面,还有session丢失比较麻烦,我现在又个项目也是这个问题,这个问题是好多东西引起的,苦呀!
      

  2.   

    如果对安全要求不严格,可以用cookie防止用户绕开登陆界面。
    详细说明请看http://blog.163.com/kxm371/blog/static/3632456620096210156754/如果程序发生异常,则在Global.asax里面捕捉错误:
    例子:        protected void Application_Error( object sender, EventArgs e )
            {                      Exception[] errors = Context.AllErrors;
                Response.Clear();
                Response.Write( string.Format( "{0} error occors.<br />", errors.Length ) );
                for ( int i = 0; i < errors.Length; i ++ )
                {
                    //code here for each exception
                    Response.Write( string.Format( "Exception[{0}]: {1}<br />", i, errors[ i ].Message ) );
                }
                Context.ClearError();
                Response.End();
            }
      

  3.   

    第一个问题:关于安全方面最保险的是使用asp.net的MemberPrider。另外session和cookie都是有效的方法,为了安全建议不要单纯的使用cookie。session容易丢失,可以使用定时回调的方式来延长。第二个问题:指定错误页面,在web.config中指定,也可以再IIS的asp.net选项中设置,很容易的,选在自定义错误,输入页面地址。
      

  4.   

    1、验证当前Request是否已经认证(IsAuthenticated )。
    2、web.config中配置如下:
    <customErrors mode="RemoteOnly"
      defaultRedirect="customerror.htm">
        <error statusCode="404" redirect="customerror404.htm"/>
    </customErrors>
      

  5.   


    一般是不会丢失的,如果你每次都用~/admin/index.aspx
    我以前看过如果你用相对路径比如../admin/index.aspx
    session会出现丢失情况
      

  6.   

    1:用asp.net中作用基于窗体的验证,它是利用cookie的
    2:在web.config里面设置一下就可以了,ls的
      

  7.   

    第一个问题还是用SESSION吧。
    第二个问题,这个好,直接在web.config中设置异常的跳转页面,在程序中使用try-catch,正确使用对你学好编程是很有帮助的
      

  8.   

    通过session,cookie记录,
     <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20" />
    所有页面继承BasePage或用httphandle 判断
    <customErrors mode="RemoteOnly" defaultRedirect="Error.aspx">
    <!-- 
       <error statusCode="403" redirect="NoAccess.htm" />
       <error statusCode="404" redirect="FileNotFound.htm" />
            -->
    </customErrors>转页面或在Application_Error捕捉错误
    protected void Application_Error(Object sender, EventArgs e)
      {
       Exception objErr = Server.GetLastError().GetBaseException();
       string error = "发生异常页: " + Request.Url.ToString() + "<br>";
       error += "异常信息: " + objErr.Message + "<br>";
       Server.ClearError();
       Application["error"] = error;
       Response.Redirect("~/ErrorPage/MyErrorPage.aspx");
      }
      

  9.   

    或用数据库保存用户登录,通过数据库判断
    或用Forms 验证方式FormsAuthentication
      

  10.   

    问题一:在asp.net 中如何防址在ie地址栏中直接输入访问程序主页面的地址,从而绕开登陆界面,我用SEssion,发现它很容易丢失,大家有好的方法吗?? 
    厉害一点就是Form验证,不过这个呢,是微软定制好的,当然自己也可以修改问题二::在asp.net 如果程序发生异常,如何跑转到友好的错误信息页面,如何显示错误信息?? 
    这个呢自己用程序代码实现跳转,也可以在web.config中设置一下customErrors,具体如何的配置,网上有资料,楼主可以看一下
      

  11.   

    第一个问题:session和cookie都是有效的方法第二个问题:自己做几个友好的错误页面,在webconfig里重定向一下就哦了<customErrors mode="RemoteOnly" 
      defaultRedirect="customerror.htm"> 
        <error statusCode="404" redirect="customerror404.htm"/> 
    </customErrors> 
      

  12.   

    用户和角色管理, ASP.NET工具
      

  13.   

    我也曾经为了Session 失效而烦劳,解决办法11楼可行