ASP.NET模拟问题(第2部分)
这是关于无法冒充当前登录的
Windows用户的上一篇文章的后续内容.有很多好的建议,但之前的主题变得混乱,所以我正在重置这篇文章.希望在下面记录的当前状态下,问题显而易见.这是一条很好的路径,所以我不得不相信我所缺少的是一个小配置步骤.
问题:我需要让ASP.NET模拟当前登录的用户.当我在IIS 7.5下运行时,它不起作用. IIS Express工作正常,但我认为这是因为调试会话在我的用户ID下运行. 我使用Environment.Username来确定该用户是谁.有人建议此属性始终返回登录的用户名,但在我的测试中,它会从IIS返回模拟用户. 例如,如果我的web.config有…… <identity impersonate="true" /> 当我使用该设置在IIS 7.5下运行时,Environment.Username返回IUSR.我相信这是IIS匿名用户帐户. 如果我将web.config更改为… <identity impersonate="true" userName="domainjlivermore" password="mypassword" /> …然后Environment.Username返回jlivemore.但是,如果没有我在web.config中明确设置它,我需要它返回jlivermore. 这是我的IIS设置…… .NET授权规则 认证 一个问题,如果我禁用匿名身份验证,那么系统会提示我登录该站点.我想如果您使用域上的Active Directory帐户登录,那么此挑战不会出现?即使我在此提示中输入我的用户名/密码,我仍然无法进行模拟. 基本设置 解决方法
我不确定您是否找到了答案,但如果有人遇到问题,您需要在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-mvc – 在ASP.NET MVC 4中的用户控制等效
- ASP.NET Core 2.0仅在共享文件夹中查找视图
- 将数据从asp.net-mvc传递到javascript的最佳做法
- asp.net-core – 根据ASP.NET Core中请求标头中提供的API密
- asp.net – 使用ASP .Net MVC4处理Web API中的集合内的集合
- asp.net-mvc-3 – 如何将HttpContext传递给MVC3应用程序中的
- asp.net表单身份验证将.net 2更改为.net4
- asp.net-mvc-2 – 在IIS 7.5上启用html PUT方法
- (*)真的很贵吗?
- ASP.NET (C#) 数据库-01_ADO_NET-04_DataSet-07_TableMappi