Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FormsAuthentication允许访问所有页面_C#_Web Config_Forms Authentication - Fatal编程技术网

C# FormsAuthentication允许访问所有页面

C# FormsAuthentication允许访问所有页面,c#,web-config,forms-authentication,C#,Web Config,Forms Authentication,我试图实现表单身份验证,但我得到了一点奇怪的行为。 以下是web.config中的行: <authentication mode="Forms"> <forms loginUrl="/contentpages/login.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="/" requireSSL="false" cookieless="UseCookies" enab

我试图实现
表单身份验证
,但我得到了一点奇怪的行为。 以下是
web.config
中的行:

  <authentication mode="Forms">
     <forms loginUrl="/contentpages/login.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="/" requireSSL="false" cookieless="UseCookies" enableCrossAppRedirects="false" />
  </authentication>
  <authorization>
     <allow users="?" />
  </authorization>
)由于某种原因将我重定向到登录页面。
如果我在地址栏中重新输入地址,它会按预期将我带到网站主页(无需登录,我在登录页面时没有登录,只是在地址栏中重新输入了地址)

为什么会发生这种情况


我希望我清楚地说明了情况,如果您需要更多信息,请随时询问。

您可能看到此功能,因为您没有指定位置。试试这个:

<location path="your folder">
    <system.web>
    your authorization
    </system.web>
</location>

你的授权
另一个问题可能是您将如何授予这些权利。“?”针对所有未经身份验证的用户。如果您试图简单地向所有用户授予访问权限,那么最好使用“*”

同样重要的是要注意这些规则是级联的。因此,您可以添加多个规则来微调访问。例如,如果我想授予特定用户组的访问权限,并拒绝其他所有人的访问权限,我将使用:

<authorization>
    <allow roles="administrators" />
    <deny users="*" />
</authorization>


好奇的是,当您删除匿名用户的授权规则时,是否会出现相同的行为?不,当然不会,因为不需要身份验证。但这仍然很有趣。问题是,我想允许访问所有页面,只授权两个页面。添加
Location
标记会产生500个错误(即使是我在
Configuration
部分添加的错误也很难)。此外,它仍然不能解释行为。您应该能够使用allow users=“*”添加Location path=“site root folder”然后为您要拒绝的每个页面创建另一个位置。它是级联的,因此您设置的每个授权都是在前一个授权的基础上生成的。我希望看到您收到的错误消息。如果您从服务器上的浏览器查看页面,您应该能够获得完整的错误消息。我得到的错误是
dumb
错误:服务器错误500-内部服务器错误。您正在查找的资源存在问题,无法显示。您是否能够从服务器事件日志中获取实际错误?我想知道是否由于配置不完整而发生此行为。基本上是告诉服务器仅允许用户谁缺少forms auth cookie。如果您一直在测试登录脚本,您的缓存中可能有一个cookie,这会导致页面拒绝您。至少,我会将?更改为*因为从您的描述中,您希望所有其他用户都可以访问该页面。然后为需要登录的页面添加位置标记。