【发布时间】:2014-06-04 01:59:32
【问题描述】:
我创建了一个使用 ASP.NET 身份来实现用户帐户功能的网站。 我想使用标准 url 授权限制对特定文件夹(“帐户”)中所有页面的访问,但我的应用程序中的“登录”和“注册”除外。 未登录的用户应该只能打开“帐户/登录”和“帐户/注册”,并且经过身份验证的用户应该能够打开除这些页面之外的所有其他内容。
根 Web.config 没有授权规则,而我放在 Account 文件夹中的 Web.config 有:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="Register.aspx">
<system.web>
<authorization>
<allow users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
但是,有了这些规则,就会出现问题。请求该文件夹中的任何页面,包括“Login.aspx”,都会导致重定向到http://localhost:15284/Account/Login。正如我所说,即使请求“登录”页面也会重定向回自身,就像不允许用户一样,因此会创建无限循环。该循环会导致 HTTP 404.15,因为查询字符串超出了其长度限制(“?ReturnUrl=%2FAccount%2FLogin”会在每次重定向时附加到 URL)。
是我的规则不正确还是另有原因? 也许问题与 ASP.NET 身份有关? 或者这可能是由于 url 重写(在 VS 2013 WebForms 模板中默认启用)而发生的?
如果没有 Web.config,网站当然可以工作,但每个人都可以访问我不想要的所有内容。
在此先感谢,对不起我的英语! :)
【问题讨论】:
标签: c# asp.net webforms asp.net-identity