Windows Authentication - Getting current user name

2019-04-07 22:57发布

问题:

In my MVC application I want to render a table in a cshtml file, if the current log in user is some x person. I am using windows authentication and I have made the following changes in web.config file.

<authentication mode="Windows">
      </authentication>

And in my controller when I am trying to access the current user name I am not getting any user name. I am trying the following:

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name;

This above line was working before. But I don't know whats wrong now. Also I have hosted my application on IIS now.

回答1:

You need to put the [Authorize] attribute on your controller.

You can use User.Identity.Name in your controllers.

[Authorize]
public class YourController : Controller
{

    public ActionResult SomeAction()
    {
        var userName = User.Identity.Name;
    }
}


回答2:

Take a look at the web project's properties, in particular:

  1. Anonymous Authentication - Set to "Disabled"
  2. Windows Authentication - Set to "Enabled"

By default these are set to the opposite of what you're probably looking for.

(Image sourced from MSDN)



回答3:

A little bit late, but this may serve others in the future.

I had the same problem once after deploying my site to a new IIS server, and the anonymous authentication was enabled, so make sure that anonymous authentication is disabled and it should work.