ASP.Net 仅向经过身份验证的用户提供访问/浏览权限

Posted

技术标签:

【中文标题】ASP.Net 仅向经过身份验证的用户提供访问/浏览权限【英文标题】:ASP.Net Provide Acceess/Browse Rights only to the Authenticated User 【发布时间】:2012-01-06 11:00:28 【问题描述】:

在我的 web 服务应用程序的根目录中,我有一个目录,其中包含一些 htmltxt 文件。只有经过身份验证的用户才能访问这些文件。我怎样才能做到这一点?

这是我的问题的后续:ASP.Net Directory Security

我按照Shark 在该帖子中的建议实施了HttpHandler。它允许处理htmltxt 文件,但我也无法将这些文件显示给经过身份验证的用户。


更新:我通过检查处理程序上的会话解决了这个问题。在服务器上托管它时,我遇到了另一个问题。即我的自定义处理程序没有被调用。我找到了该问题的原因和解决方案:http://msdn.microsoft.com/en-us/library/bb515343.aspx

原因:

默认情况下,Internet 信息服务 (IIS) 会将请求传递给 只有某些文件类型才能为 ASP.NET 服务。带有文件名的文件 .aspx、asmx 和 .ashx 等扩展名已经映射到 ASP.NET ISAPI 扩展 (Aspnet_isapi.dll)。

解决方案:

要让 IIS 将其他文件扩展名传递给 ASP.NET,您必须 在 IIS 中注册扩展。


整个故事: http://www.naveenbhat.in/2012/06/directory-security-on-webservice-with.html

【问题讨论】:

【参考方案1】:

如果您使用 ASP.Net Security(表单/Windows 身份验证),您可以通过 web.config 设置简单地控制它。像这样:

<system.web>

  <authentication mode="Forms">
  </authentication>

   <location path="directoryPath"> 
      <system.web>
         <authorization>
            <deny users="?"/> // this will deny access to anonymous users
         </authorization>
      </system.web>
   </location>

</system.web>

【讨论】:

我已经尝试过了,但它不适合我!有什么相关的 - 我需要在代码中做吗? 您尝试过表单身份验证吗?如果在认证后检查 Page.User.Identity.IsAuthenticated 会返回什么?还是您还没有配置任何身份验证? 抱歉耽搁了......我使用了windows 身份验证,而Page.User.Identity.IsAuthenticated 在我的情况下总是返回true。我没有尝试Forms,因为它是一个 Web 服务应用程序,而 AFAIK Forms 身份验证在这里不是一个好的选择。 因为我为htmlpdf 文件创建了一个单独的处理程序,我曾经在那里检查session,现在它工作正常。谢谢!...我会将其标记为已回答,因为在大多数情况下它似乎是正确的答案。

以上是关于ASP.Net 仅向经过身份验证的用户提供访问/浏览权限的主要内容,如果未能解决你的问题,请参考以下文章

使用浏览器后退按钮进行 ASP.NET 身份验证登录和注销

如何让 asp.net 登录控件自动验证以前经过身份验证的用户?

我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户

ASP.NET Membership - 当您在同一个 WebApp 中调用 WebService 时,经过身份验证的用户会丢失

使用经过身份验证的用户凭据从 asp.net 启动控制台应用程序

从 ASP.NET/Blazor 服务器中的当前经过身份验证的用户获取数据