我在web.config中写
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" timeout="120">
<!-- protection="[All|None|Encryption|Validation]" -->
</forms>
</authentication>
结果运行时在客户端访问时会弹出对话框要求输入用户名和密码,我在IIS中把该WEB站点改为允许匿名访问也不行,为什么啊,怎么改啊?

解决方案 »

  1.   

    <authentication mode="Windows" />  <!--  授权 
               此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
              应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
              (未经身份验证的)用户。
        -->    <authorization>
            <allow users="*" /> <!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                -->
        </authorization>
      

  2.   

    <authorization>
    <!--<deny users="?"/>-->
            <allow users="*" /> --><!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
                 -->  
        </authorization>
      

  3.   

    楼主你好,上面说得对,我再解释一下。基于窗体的验证就是要限制匿名访问(当然有时是为了应用角色),比如你站点的页面是机密的,要求验证,不通过验证就不给看。所以未验证时,客户端请求一个页面时——该页面是受保护的——自然要求登录验证,跳出那个页面(你设置的loginUrl="login.aspx"),达到了目的。
      

  4.   

    我使用基于窗体的验证,当初的目的是为了:当用户想不通过login.aspx 而直接访问其他页面时转到login.aspx,那如果不使用基于窗体的验证,允许匿名登陆,怎么才能达到相同的目的?即用户一定要通过login.aspx登录后才能访问其他页面,否则转回到login.aspx?
      

  5.   

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.web>
    <authentication mode="Forms">
    <forms name="checkQX" loginUrl="admin/login.aspx" protection ="All" timeout="20"></forms>
    </authentication>
    </system.web> <location path="admin">
    <system.web>
    <authorization>
    <deny users="?"/>
    </authorization>
    </system.web>
    </location>
    </configuration>
    admin目录下的页面只有登陆了才可以看,否则跳转。
      

  6.   

    主要通过IIS与程序两个级别控制;
    楼主的需求事实上就是让iis不要控制而由程序来控制,可以这样实现:
    在IIS中项目上点右键-所有任务-权限向导中选public website,然后在属性的目录安全性中允许匿名访问并让IIS控制密码(如不想弹出操作系统的那个输入密码对话框可不使用集成windows登录);
    在程序webconfig中设定deny users="?"/,这样未授权用户访问访问时会自动导向到login页面,登录后返回到刚才要求的页面。