Jash
Jash

Reputation: 962

Windows Authentication - Getting current user name

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.

Upvotes: 6

Views: 31880

Answers (3)

Bern
Bern

Reputation: 7951

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.

Web project properties

(Image sourced from MSDN)

Upvotes: 13

Mhd. Yasseen
Mhd. Yasseen

Reputation: 1037

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.

Upvotes: 1

jgauffin
jgauffin

Reputation: 101176

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;
    }
}

Upvotes: 12

Related Questions