Why does HttpContext.Current.User.Identity.Name re

2019-01-25 08:48发布

问题:

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.