【问题标题】:How do I ensure I have authorization to the root page of my website?如何确保我对我的网站的根页面有授权?
【发布时间】:2014-06-24 13:21:48
【问题描述】:

我有一个网站,它在 IIS 7 上使用 .Net 4.0 使用 ASP.NET 表单身份验证。我使用第三方单点登录提供程序 (jasig CAS) 保护了该网站,并且一切正常。

IIS 中的默认文档列表在最顶部有 Default.aspx。

网站的默认页面是 Default.aspx,它通过我的 web.config 中的以下 sn-p 向公众开放,当我直接导航到该页面时,这再次按预期工作。

  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

我遇到的问题是,当我导航到我网站的根目录时,即 www.mydomain.com 而不是 www.mydomain.com/default.aspx 我被重定向到表单身份验证页面。

确定这是同一个页面,并且受相同的授权规则约束?

我被困在这上面,不知道该转向哪里。

【问题讨论】:

  • 几个问题.. 1. Default.aspx 是否设置为您项目中的默认启动页面..? 2. 当您查看项目属性/构建时,Visual Studio 中的设置是什么或如何设置 3. 您是否使用 MasterPages..?你有没有调试过这个/通过代码..?
  • Default.aspx 是我项目中的默认启动页面,我正在使用母版页(不确定这有什么帮助) - 表单身份验证在它到达页面之前启动,所以没有断点可以被击中。

标签: c# asp.net webforms forms-authentication


【解决方案1】:

Stack Overflow 中也有类似的问题:

Allowing anonymous access to default page

在 Global.asax 中,将以下代码放在 Application_BeginRequest 方法中:

if (Request.AppRelativeCurrentExecutionFilePath == "~/")
    HttpContext.Current.RewritePath("default.aspx");

【讨论】:

  • 好发现!发帖前找了半天!
  • 如果您像我一样使用 .NET jasig 客户端,这对您不起作用 - 因为 jasig .NET 客户端在 global.asax 中的开始请求之前拦截 http 请求管道,所以此修复程序在我的开发环境中对我有用,但在暂存时失败,因此我现在无法接受此答案。
【解决方案2】:

我最终使用了这段代码(与上面相同),但它必须进入 CasAuthenticationModule 中的 OnBeginRequest 方法

if (Request.AppRelativeCurrentExecutionFilePath == "~/")
    HttpContext.Current.RewritePath("default.aspx");

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2012-05-16
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多