gpt4 book ai didi

ASP.NET 模拟问题(第 2 部分)

转载 作者:行者123 更新时间:2023-12-02 21:02:07 27 4
gpt4 key购买 nike

这是上一篇关于无法模拟当前登录的 Windows 用户的文章的后续内容。有很多好的建议,但是之前的帖子变得困惑,所以我用这篇文章重新设置。希望根据下面记录的当前状态,问题是什么会很明显。这是一条很旧的路径,所以我不得不相信我所缺少的只是一个小小的配置步骤。

问题:我需要让 ASP.NET 模拟当前登录的用户。当我在 IIS 7.5 下运行时,它不起作用。 IIS Express 工作正常,但我相信这是因为调试 session 在我的用户 ID 下运行。

我使用Environment.Username来确定该用户是谁。有人建议该属性始终返回登录的用户名,但根据我的测试,它返回来自 IIS 的模拟用户。

例如,如果我的 web.config 有...

    <identity impersonate="true" />

当我使用该设置在 IIS 7.5 下运行时,Environment.Username 返回 IUSR。我相信这是 IIS 匿名用户帐户。

如果我将 web.config 更改为...

    <identity impersonate="true" userName="domain\jlivermore" password="mypassword" />

...然后Environment.Username 返回jlivemore。但是,我需要它返回 jlivermore,而无需在 web.config 中显式设置它。

这是我的 IIS 设置...

.NET 授权规则 .NET Authorization Rules

身份验证 Authentication

一个问题,如果我禁用匿名身份验证,系统会提示我登录该网站。我想如果您使用域上的 Active Directory 帐户登录,那么这个挑战就不会出现?即使我在此提示中输入我的用户名/密码,我仍然无法进行模拟。

enter image description here

基本设置

Basic Settings

最佳答案

我不确定您是否找到了答案,但如果有人遇到问题,您将需要在 web.config 文件中添加以下内容

<authentication mode="Windows"/>
<identity impersonate="true"/>

在 IIS 中,您需要启用 Asp.net 模拟并启用 Windows 身份验证,其他应禁用。在 Windows 身份验证中,转到高级设置并取消选中启用内核模式身份验证。应该可以做到这一点。您的网站现在应该设置为本地 Intranet 应用程序,并且使用以下任何一项都可以

System.Security.Principal.WindowsIdentity.GetCurrent().Username()
HttpContext.Current.User.Identity.Name
System.Threading.Thread.CurrentPrincipal.Identity.Name

但是使用Environment.Username只会返回服务器名称,希望这可以帮助任何遇到此问题的人

关于ASP.NET 模拟问题(第 2 部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com