我正在使用ASP.NET和C#开发一个网站。
我创建了网站,所以当用户访问该网站时,他的Windows客户端用户名将被读出:
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
然后我在数据库中查找他的用户名,并从返回数据创建一个包含所有必要数据(团队,名称,权限级别,角色......)的用户对象。 然后我将此对象保存在会话var中,直到用户注销。
这本身就像魅力一样,但现在我已经部署到服务器,我为每个用户提供了defaultAppPool
。
我做错了什么?
在我的web.config文件中,我有:
authentication mode="Windows"
我不得不承认这是我第一次自己进行部署,除此之外一切顺利。
答案 0 :(得分:2)
正如您所发现的,System.Security.Principal.WindowsIdentity.GetCurrent()
为您提供了应用程序池的标识。
您应该使用HttpContext.Current.User.Identity
。
答案 1 :(得分:1)
Windows身份验证和IIS 如果为ASP.NET应用程序选择Windows身份验证,则还需要在IIS中配置身份验证。那是因为Windows身份验证被委托回IIS。 IIS为您提供了四种身份验证方法的选择:
答案 2 :(得分:0)
获取当前用户身份:
var userWinId = HttpContext.Current.User.Identity as WindowsIdentity;
答案 3 :(得分:0)
使用
System.Web.HttpContext.Current.User.Identity.Name
而不是
User.Identity.Name
或
System.Security.Principal.WindowsIdentity.GetCurrent().Name