ASP.Net 仅向经过身份验证的用户提供访问/浏览权限
Posted
技术标签:
【中文标题】ASP.Net 仅向经过身份验证的用户提供访问/浏览权限【英文标题】:ASP.Net Provide Acceess/Browse Rights only to the Authenticated User 【发布时间】:2012-01-06 11:00:28 【问题描述】:在我的 web 服务应用程序的根目录中,我有一个目录,其中包含一些 html
和 txt
文件。只有经过身份验证的用户才能访问这些文件。我怎样才能做到这一点?
这是我的问题的后续:ASP.Net Directory Security
我按照Shark 在该帖子中的建议实施了HttpHandler
。它允许处理html
和txt
文件,但我也无法将这些文件显示给经过身份验证的用户。
更新:我通过检查处理程序上的会话解决了这个问题。在服务器上托管它时,我遇到了另一个问题。即我的自定义处理程序没有被调用。我找到了该问题的原因和解决方案: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
身份验证在这里不是一个好的选择。
因为我为html
和pdf
文件创建了一个单独的处理程序,我曾经在那里检查session
,现在它工作正常。谢谢!...我会将其标记为已回答,因为在大多数情况下它似乎是正确的答案。以上是关于ASP.Net 仅向经过身份验证的用户提供访问/浏览权限的主要内容,如果未能解决你的问题,请参考以下文章
如何让 asp.net 登录控件自动验证以前经过身份验证的用户?
我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户
ASP.NET Membership - 当您在同一个 WebApp 中调用 WebService 时,经过身份验证的用户会丢失