当用户导航到 ASP.NET 网站时使用哪个帐户?

Posted

技术标签:

【中文标题】当用户导航到 ASP.NET 网站时使用哪个帐户?【英文标题】:Which account is used when a user navigates to a ASP.NET website? 【发布时间】:2009-12-30 18:09:27 【问题描述】:

当用户浏览 ASP.NET 网站时,用户是冒充ASPNET帐户还是在IIS->目录安全->用于匿名访问的帐户中指定的帐户(例如:IUSR_XXX

我的网站将文件写入磁盘,我想知道这些帐户中的哪些需要对该文件夹的写入权限?另外,有人能解释一下 web.config 中的 impersonate 元素是如何与这一切联系在一起的吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果在 ASP.NET 应用程序中启用了模拟,则:

如果在 IIS 中启用匿名访问,则使用 IUSR_machinename 帐户发出请求。 如果在 IIS 中禁用匿名访问,则使用经过身份验证的用户的帐户发出请求。 在任何一种情况下,都会在 Windows 访问控制列表 (ACL) 中为用户请求的资源检查帐户的权限,并且资源仅在其运行的帐户对其有效时才可用资源。

如果在 ASP.NET 应用程序中禁用模拟,则:

如果在 IIS 中启用匿名访问,则使用系统级进程帐户发出请求。 如果在 IIS 中禁用匿名访问,则使用经过身份验证的用户的帐户发出请求。 在任何一种情况下,都会在 Windows ACL 中为用户请求的资源检查帐户的权限,并且资源仅在它们是帐户时才可用 running under 对该资源有效。

来源:Understanding Impersonation in ASP.NET

【讨论】:

【参考方案2】:

默认为 identity is MachineName\ASPNET,您可以通过在 web.config 中打开身份模拟来更改此行为

【讨论】:

Win XP 的默认设置。

以上是关于当用户导航到 ASP.NET 网站时使用哪个帐户?的主要内容,如果未能解决你的问题,请参考以下文章

使用 asp.net 中的会话从帐户注销时遇到问题

asp.net 将付款发送到贝宝帐户 [关闭]

如何在 asp.net 4.5 中使用 facebook 帐户开发登录

如何在 ASP.NET Core 中将角色添加到 Windows 身份验证

将补丁应用到 Asp.Net MVC 网站

ASP.NET Core MVC 身份功能在发布到服务器时不起作用