Как получить User.Identity.Name от контроллера? - PullRequest
1 голос
/ 02 октября 2009

Я хочу иметь некоторую информацию viewData во всех моих представлениях, поэтому я следую этому уроку

http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx

Итак, я сделал свой собственный applicationController, но мне нужно получить UserName от пользователя.

Тем не менее, когда я делаю это "HttpContext.User.Identity.Name" в конструкторе, оно всегда равно нулю. Хотя я не уверен, почему.

Спасибо

Хорошо, базовая вещь сделала свое дело.

  protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        Guid userId = coursesS.GetUserId(HttpContext.User.Identity.Name);
    }

Так что, похоже, работает. Теперь единственное, что, кажется, проходит через это дважды. Как я вхожу в систему, и, кажется, сделать это дважды. Я предполагаю, так как это похоже на использование этого кода в каждом действии. Когда я загружаю все эти частичные представления на моем сайте, вызывая их в моем контроллере, он делает это.

Так много я должен кешировать это, но я не уверен, как, хотя.

Ответы [ 5 ]

7 голосов
/ 02 октября 2009
HttpContext.Current.User.Identity.Name  

Обратите внимание на .Current , который отсутствовал в вашем вызове.

4 голосов
/ 02 октября 2009

Попробуйте инициализировать вещи в методе Initialize ApplicationController, HttpContext недоступен в конструкторе. Обязательно вызовите base.Initialize (), иначе вы можете получить интересные результаты.

2 голосов
/ 02 октября 2009

Какое конкретное свойство, к которому вы обращаетесь, имеет значение null? Возможно, вы захотите проверить это User.Identity.IsAuthenticated == true перед проверкой свойства Name. Также убедитесь, что включена проверка подлинности с помощью форм и что вы действительно вошли на сайт первым.

0 голосов
/ 02 октября 2009

Вы находитесь в контроллере, поэтому используйте следующее:

ControllerContext.HttpContext.Current.User.Identity.Name
0 голосов
/ 02 октября 2009

использование

Page.User.Identity.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...