asp.net FROM的身份验证始终重定向

asp.net FROM的身份验证始终重定向,asp.net,forms,authentication,Asp.net,Forms,Authentication,我的网站应该有一些只有当用户通过身份验证时才能看到的部分,一些每个人都可以看到的部分 无论访问哪个页面,表单身份验证总是将用户重定向到登录页面。这是否意味着我不应该使用表单身份验证?如何解决此问题?使用web.config中的元素设置受保护的页面。您需要从整个网站中删除授权,并为元素中的每个受保护页面设置授权。 一种常见的方法是将所有受保护的页面放在一个单独的文件夹中,并指定该文件夹的位置路径。 另一种方法是使用一个继承System.Web.Page的类,并在Init事件中将用户重定向到某个

我的网站应该有一些只有当用户通过身份验证时才能看到的部分,一些每个人都可以看到的部分

无论访问哪个页面,表单身份验证总是将用户重定向到登录页面。这是否意味着我不应该使用表单身份验证?如何解决此问题?

使用web.config中的元素设置受保护的页面。您需要从整个网站中删除授权,并为元素中的每个受保护页面设置授权。
一种常见的方法是将所有受保护的页面放在一个单独的文件夹中,并指定该文件夹的位置路径。
另一种方法是使用一个继承System.Web.Page的类,并在Init事件中将用户重定向到某个未经身份验证的页面。然后,每个页面都应该继承此页面

<system.web>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
  </system.web>
  <location path="public">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="login.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

对我来说,问题在于
机器钥匙。如果您正在解密/加密cookie,则需要对其进行解密/加密(例如:web场)。因为应用程序无法解密cookie,即使它被来回传递,应用程序的行为就像cookie根本不存在一样。将此设置添加到web.config为我修复了它:

<machineKey compatibilityMode="Framework20SP2" validationKey="some_hard_coded_long_key" decryptionKey="another_hard_coded_long_key" validation="SHA1" />


有关更改权限(授权)的详细信息,请参阅本文。您设置了根文件夹的权限。我发现了一个有趣的事实:这种表单身份验证也适用于您的css文件。您也必须使用下面Adrians的解决方案为您的css文件授予匿名权限。当我使用继承方法时,我应该删除web.config中的表单身份验证,对吗?您仍然需要从根目录中删除授权策略,并且仍然需要将身份验证模式用作表单,它帮助您访问和使用HttpContext.Curent.User。如果你需要保护的页面不多,我建议你选择这个位置。事实上,我的情况正好相反。我有几页不需要保护。在这种情况下会有帮助吗?