Asp.net 4.0 Forms 身份验证和友好网址



Referente: Microsoft.AspNet.FriendlyUrls

我正在使用表单身份验证和友好网址。我有一个名为"帐户"的子目录,其中包含文件"注册.aspx"。我需要授予文件"注册.aspx"的权限,并通过web.config拒绝所有其他文件的权限。我已经尝试了各种设置,但文件注册.aspx没有得到许可。

网络.config

<system.web>
    <authentication mode="Forms">
      <forms loginUrl="Account/login" name="LOGIN" defaultUrl="Account/Logged" timeout="15" cookieless="UseDeviceProfile" protection="All" slidingExpiration="true" />
    </authentication>
  </system.web>
  <location path="Account">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="Account/Register">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>

我在友好URL和表单身份验证(虽然OWIN)方面遇到了同样的问题。尝试访问授权内容页面试图重定向到/Account/Login?returnUrl=%2FAccount%2FLogin,只有重定向卡在无限循环中,直到查询字符串超过最大长度!!我能找到的唯一方法是将登录页面(或任何其他允许匿名访问的页面)放在自己的文件夹中,并授予对该文件夹而不是页面本身的访问权限。因此,如果我有/帐户/登录,我会添加:

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

我看到您已经为/Account 路径添加了规则,但已将其设置为拒绝。不确定您是否已将其更改为本地允许...

虽然我使用的是MS OWIN的表单身份验证库,而不是默认 ASP.Net 内置库,但我希望上述内容也适用于标准库。仅供参考,我的表单身份验证身份验证设置如下所示:

    public void ConfigureAuth(IAppBuilder app)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            AuthenticationMode = AuthenticationMode.Active,
            LoginPath = new PathString("/Account/Login"),
            LogoutPath = new PathString("/Account/Logout"),
            ExpireTimeSpan = TimeSpan.FromHours(12),
            SlidingExpiration = true,
            CookieName = "MyCookieName.Session",
            CookieSecure = CookieSecureOption.SameAsRequest,
            // Required for AJAX calls
            CookieHttpOnly = false
        });
    }

试试下面的代码,改 * 而不是 ?

<location path="Account/Register">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>

看到这个非常好的解释:http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

相关内容

  • 没有找到相关文章

最新更新