HttpContext.Current.User.Identity 中是否会缺少域名?
我正在开发一个简单的单页 ASP.Net 网站,供公司内部有限数量的用户使用。
在其中,我使用 HttpContext.Current.User.Identity
以 Domain\ActiveDirectoryUserName 格式获取记录的用户名,并按照答案中的建议删除域名这篇文章: 用于解析 User.Identity 的内置帮助程序。命名为 Domain\Username 并将其显示在 Hello xyz 之类的标签中
是否会出现域名不存在的情况 在HttpContext.Current.User.Identity
?
更新:该网站使用 Windows 身份验证
I'm working on a simple one page ASP.Net site used inside the company by a limited number of users.
In it, I use HttpContext.Current.User.Identity
to get the logged user's name in the format Domain\ActiveDirectoryUserName and stripping out the domain name as suggested by the answer in this post: Built-in helper to parse User.Identity.Name into Domain\Username and display it in a label like Hello xyz
Will there ever be a scenario, where the Domain name will not be present in HttpContext.Current.User.Identity
?
UPDATE: This site uses Windows Authentication
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,如果用户是匿名的,您将得到一个空字符串来表示用户的身份。
其次,当您使用支持域的身份验证源时,仅存在一个域。如果您在 IIS 下使用 Windows 集成身份验证,则该域将始终出现在每个非匿名用户身份中。如果您使用表单身份验证或其他身份验证源,则提供程序可以完全控制用户身份的格式。
正如您所指出的,您正在使用 Windows 集成身份验证,只要用户经过身份验证,您将始终拥有一个域。如果允许匿名访问,则应在尝试解析其名称之前先检查
HttpContext.Current.User.IsAuthenticated
。Firstly, if the user is anonymous, you'll get an empty string for the user's identity.
Secondly, there is only a domain present when you're using an authentication source which supports domains. If you're using Windows Integrated Authentication under IIS, the domain will always be present in every non-anonymous user identity. If you're using forms authentication or another authentication source, the provider has full control over the format of the user's identity.
As you've indicated you're using Windows Integrated Authentication, you'll always have a domain, provided the user is authenticated. If you allow anonymous access, you should check that
HttpContext.Current.User.IsAuthenticated
first before trying to parse their name.