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,这会导致页面拒绝您。至少,我会将?更改为*因为从您的描述中,您希望所有其他用户都可以访问该页面。然后为需要登录的页面添加位置标记。