5

这是我的视图的目录布局的简单概述:

项目

  • 第 1 页
  • 第2页
  • RSS

问题

  • 第 1 页
  • 第2页
  • RSS

我正在使用表单身份验证来拒绝对所有未经身份验证的用户的访问,这很好。但是,我希望能够向所有人授予对 RSS 视图的访问权限(这样他们就可以通过谷歌阅读器和其他东西订阅)

我了解您可以通过将以下页面添加到您的 web.config 来授予对页面的访问权限

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

但是,我将如何使用动态制作的 URL 来执行此操作,例如:

Issues/RSS/chrisj
  • 该路径映射到称为 RSS 的问题中的控制器,该控制器接受用户名并吐出有关问题的 RSS ......

编辑

我认为一些答案已经解决了它,但是:

看来,至少在我的情况下,您仍然需要身份验证 cookie 才能看到该页面。只要您有 cookie,您就可以退出并查看它。

这对我没有好处,我需要页面完全公开,因为它是一个 RSS 提要。

4

5 回答 5

3

这实际上比我想象的要简单得多。似乎.net很聪明,我尝试了以下方法:

  <location path="Issues/RSS">
<system.web>
  <authorization>
    <allow users="*" />
    <allow users="?" />
  </authorization>
</system.web>

它奏效了:)

于 2008-12-04T15:38:54.213 回答
3

忘记 <location><allow /><deny /> 的东西......听起来你需要在你的动作上使用 [Authorize] 属性。

查看这些页面了解更多信息: http ://www.asp.net/learn/mvc/tutorial-17-cs.aspx http://www.pnpguidance.net/post/ASPNETMVCFrameworkPreview4HandleErrorAuthorizeOutputCacheActionFilterAttributes.aspx

此外,该属性也可以应用于控制器级别,因此您不必将其应用于每个单独的操作。

于 2009-03-10T21:00:30.470 回答
1
<location path="/Issues/RSS/">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>

编辑:顺便说一句,这是因为 .NET 假设 URL 进入一个目录,并且上面的这个位置标签说“'Issues/RSS'目录中的任何东西都是安全的 :)

于 2008-12-04T15:39:53.650 回答
0

这可能无法按预期工作。

看来,至少在我的情况下,您仍然需要身份验证 cookie 才能看到该页面。只要您有 cookie,您就可以退出并查看它。

这对我没有好处,我需要页面完全公开,因为它是一个 RSS 提要。

于 2009-01-21T17:43:31.327 回答
0

我同意 Charlino 的观点,即 [Authorize] 标签可能会解决您的问题。

如果您对 RSS 和页面都使用单个控制器操作(并且只是基于某些参数呈现不同的 ActionResult),您可以检查用户是否通过 验证HttpContext.Current.User.Identity.IsAuthenticated,并在控制器操作中使用它来决定是否继续并允许访问。

于 2009-03-11T05:13:33.577 回答