HttpContext.Current.User.Identity.Name zawsze jest sznurkiem.Pusty
Witam używam niestandardowego MembershipProvider.
Chcę znać bieżącą nazwę Użytkownika podczas Scenariusza aplikacji, ale kiedy próbuję uzyskać dostęp HttpContext.Current.User.Identity.Name zawsze zwraca string.Pusty.
if (Membership.ValidateUser(tbUsername.Text, tbPassword.Text))
{
FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
bool x = User.Identity.IsAuthenticated; //true
string y = User.Identity.Name; //""
FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, cbRememberMe.Checked);
}
Czy coś przeoczyłem? 7 answers
FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
bool x = User.Identity.IsAuthenticated; //true
string y = User.Identity.Name; //""
Problem polega na tym, że w tym momencie ustawiasz tylko plik cookie uwierzytelniania, IPrincipal, który zostanie utworzony w module uwierzytelniania formularzy, nie nastąpi, dopóki nie pojawi się nowe żądanie - więc w tym momencie HttpContext.Użytkownik jest w dziwnym stanie. Gdy nastąpi przekierowanie, ponieważ jest to nowe żądanie z przeglądarki, plik cookie zostanie odczytany przed osiągnięciem Twojej strony i utworzeniem odpowiedniego obiektu użytkownika.
Pliki cookie są ustawiane w przeglądarce dopiero po wniosek został wypełniony.
Ponieważ strona przekierowująca tworzy plik cookie forms auth, nie musisz tego robić ręcznie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-29 06:00:18
Proszę spróbować System.Web.HttpContext.Current.Request.LogonUserIdentity.Name
zamiast User.Identity.Name
. U mnie zadziałało.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 16:51:51
Wartość {[0] } jest ustawiana przez wywołanie na RedirectFromLoginPage
. Po przekierowaniu na nową stronę możesz pobrać bieżący identyfikator użytkownika z HttpContext.Current.User.Identity.Name
. Nie jestem pewien, dlaczego w tym kontekście musisz uzyskać dostęp do nazwy użytkownika poprzez właściwość User, nie możesz po prostu użyć wartości zawartej w tbUsername.SMS?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-29 05:41:06
W wersji vs Community 2015, jeśli utworzysz aplikację web forms, automatycznie dodasz kody w sieci.węzeł config aby usunąć FormsAuthentication, spróbuj usunąć poniższą sekcję
<modules>
<remove name="FormsAuthentication"/>
</modules>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 00:02:01
Jak już sugerowano metoda FormsAuthentication.RedirectFromLoginPage()
, ustawia plik cookie uwierzytelniania automatycznie.
Jednak w moim przypadku miałem zagnieżdżone aplikacje internetowe, w których wyczyściłem znacznik <httpModules>
w aplikacji potomnej (aby nie dziedziczył on httpModules z aplikacji nadrzędnej) w pliku web.config
. Usunięcie niechcianych macierzystych modułów httpModules sprawiło, że wszystko działało ponownie.
Lepiej sprawdzić ten tag przed komplikacją:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 10:03:37
Jeśli szukasz nazwy użytkownika od dostawcy członkostwa, spróbuj czegoś takiego ...
var user = Membership.GetUser( HttpContext.Current.User.Identity.Name );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-29 16:06:45
Jeśli używasz przepisywania lub zmiany adresu URL, może to być przyczyną zwrócenia pustej wartości null.Powinieneś spróbować zmienić ścieżkę adresu URL z .html do .rozszerzenie aspx lub none. to jest problem dla mojej sprawy.Spróbuj.Mam nadzieję, że to przydatne
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 16:55:18