问题
I created a site. It is an internal site. It is a .NET 4.0 site. I would like to grab the username using HttpContext.Current.User.Identity.Name of the person browsing the site. There isnt a login page since it is internal. I am not sure what I am missing. Do I need the following in my webconfig:
<authentication mode="Windows"></authentication>
<identity impersonate="true"/>
<authorization>
<allow users="?"/>
</authorization>
and this:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
回答1:
It comes up blank when unauthenticated. You can verify this by also doing:
HttpContext.Current.User.Identity.IsAuthenticated
Check your authentication level in IIS, is it set to enable windows authentication there too?
回答2:
In iis disable anonymous access and enable integrated windows security for you web application.
回答3:
Yes, you do need, at least the
<authentication mode="Windows"></authentication>
part is required if you are using Integrated Windows Auth.
After that, you should be able to grab the username of the person logged in.
No, you don't need:
<validation validateIntegratedModeConfiguration="false" />
回答4:
In IIS, go to Sites \ Default Website \ [Your Website].
Select Authentication option and disable Anonymous Authentication.
回答5:
In my case removing <remove name="FormsAuthentication" /> line from web.config helps.
I also have <authentication mode="Forms" /> in <system.web> section.
来源:https://stackoverflow.com/questions/7839567/why-does-httpcontext-current-user-identity-name-return-blank