小弟最近在学习ASP.NET2.0,在自己做验证实验的时候遇到一些麻烦,情况如下:  
小弟在一个网站的根目录下有一个LOGIN.aspx和一个IMAGEVAL.ASPX两个文件,后者是一副验证码的图.然后在根目录下还有两个文件夹,一个叫Admins  一个叫Users,在ADMINS文件夹内有一个网页文件叫QueryCondition.aspx.小弟是想任何用户都能访问根目录的文件,但是要通过FORMS验证才能访问Admins的网页文件.那么应该怎样配置Web.config文件,还是要另外写程序控制呢?

解决方案 »

  1.   

    <location path="Admins">
    <system.web>
    <authentication mode="Forms">
    <forms loginUrl="login.aspx" protection="All" ></forms>
    </authentication>

    <authorization>
    <deny users="*"/>
    </authorization>
    </system.web>
    </location>
      

  2.   

    多谢babyrockxray(紫色阴影)的指教,但是其实这样我是试过的了.但是会出现一个问题,就是即使我输入了正确的用户名和密码,但是不知道还是访问不了Admins里面的QueryCondition.aspx,希望能继续得到你的指教,下面我贴出我登陆后产生COOKIE的程序,不知道是不是这里有错
     if (ValidateUser(tb_user.Text,tb_psw.Text)==2)//这是我自己写的程序,里面设计到SQL的操作
            {
                FormsAuthenticationTicket tkt;
                string cookiestr;
                HttpCookie ck;
                tkt = new FormsAuthenticationTicket(1, tb_user.Text, DateTime.Now,
          DateTime.Now.AddMinutes(3), true, "SJ");
                cookiestr = FormsAuthentication.Encrypt(tkt);
                ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                           ck.Expires = tkt.Expiration;
                ck.Path = FormsAuthentication.FormsCookiePath;
                Response.Cookies.Add(ck);            string strRedirect;
               //strRedirect = Request["ReturnUrl"];
                //if (strRedirect == null)
                    strRedirect = "~/Admins/QueryCondition.aspx";
                   // string strReturnURL = Request.Params["ReturnUrl"];                Response.Redirect(strRedirect, true);
            }
            else
                Response.Redirect("login.aspx", true);不清楚会不会是FormsAuthentication.FormsCookiePath或者FormsAuthentication.FormsCookieName有错误
      

  3.   

    不用这么麻烦啊
    验证通过了只要
    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(用户名, false);
    这样就可以了啊
      

  4.   

    这样的话,那只能够访问它原来的默认网页(Default.aspx),但是我要登陆后访问的是Admins里面的QueryCondition.aspx页面啊.如果你想说可以去修改DefaultUrl这个属性,那么应该给予DefaultUrl这个属性一个什么值呢?而且这个属性好象是只读的吧!
    望再请教
      

  5.   

    FormsAuthentication
    好像还有一个function是可以自定义跳转到什么网页
    这个我忘了
    但是是有的
    你可以自己找找看
      

  6.   

    .Net Framework 2.0 SDK 有相似的例子,也是 一个叫Admin的文件夹~~~ 你可以照做,我就不复制那么多东西了~~~~
      

  7.   

    各位,我的问题终于解决了.下面是我WEB.CONFIG的配置
    <?xml version="1.0"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <appSettings/>
    <connectionStrings/>
     
      <system.web>
        <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->
      
       
       
        <compilation debug="true"/>
        <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            -->    <authentication mode="Forms">
          <forms  name="Admins"  loginUrl="login.aspx" protection="All" defaultUrl="~/Admins/QueryCondition.aspx"></forms>
        </authentication>
      </system.web>
      <location path="Admins">
        <system.web>
           <authorization>
              <deny users="?"/>
              </authorization>
        </system.web>
      </location>
     
        
    </configuration>其实我发觉这次我最大的失误是将Admins变成了一个虚拟目录,不知道我这样说对不对,但是当我将Admins变回普通的子目录后,以上的配置就起作用了.
    很多谢大家这次的帮忙,谢谢!