2013-03-17 3 views
1

я устанавливаю формы аутентификации печенье, как это нижеContext.User.Identity.Name возвращает нуль в MVC 4

FormsAuthentication.SetAuthCookie("test", true);

и когда я проверить, если его набор возвращает нуль ...

Context.User.Identity.Name 

любые идеи, почему это происходит? спасибо

+0

где вы это называете? –

+0

Я устанавливаю «FormsAuthentication.SetAuthCookie (« test », true); в контроллере и вызове «Context.User.Identity.Name» из Layout.cshtml (главная страница) –

+0

находятся ли они в одном запросе? –

ответ

3

Вы всегда должны перенаправить после установки куки проверки подлинности форм:

public ActionResult SomeAction() 
{ 
    FormsAuthentication.SetAuthCookie("test", true);  
    return RedirectToAction("FooBar"); 
} 

Это только в последующих действиях перенаправления к тому, что вы получите User.Identity.Name должным образом инициализированы. Причина в том, что это довольно просто: свойство User.Identity.Name инициализируется из файлов cookie «Запрос» (например, входящих файлов cookie), тогда как FormsAuthentication.SetAuthCookie устанавливает аутентификацию форм для ответа (он же испускает куки-файл), так что при последующих запросах этот файл cookie будет отправлен запрос.

+0

Да, это именно то, что я делаю .. см. Ответ ниже –

+0

Хорошо, внутри действия «Главная/Индекс» вы должны иметь возможность получить «User.Identity.Name» успешно. Убедитесь, что вы правильно настроили проверку подлинности форм в вашем web.config и что куки включены в вашем браузере: ' '. –

+0

Thats, что мне не хватало конфигурации web.config .. Большое спасибо! –