Я регистрирую пользователей в .net, используя простую аутентификацию .net:
if ( Membership.ValidateUser( user, passwd ) )
отлично работает. по пятам, я пытаюсь получить имя пользователя:
Membership.GetUser().UserName
иногда это возвращает неверный объект. иногда нет.
Кажется, я не могу определить закономерность того, что есть что.
например, пользователь входит в систему с допустимой ролью в системе как «root» / «пароль».
вызов ValidateUser () завершается успешно, но Membership.GetUser (). UserName возвращает недопустимый объект.
Спустя 2 секунды, повторите то же самое, и валидация, и GetUser () завершатся успешно.
есть идеи?
.. редактировать 1 ..
вот как я использую имя пользователя:
Roles.GetRolesForUser( Membership.GetUser().UserName );
когда я перехожу в System.Environment.UserName, список ролей возвращается пустым.
Если я оставлю это как есть и установлю файл cookie аутентификации, используя 'true' в качестве второго аргумента, он будет работать нормально.
FormsAuthentication.SetAuthCookie( user, true );
если я использую HttpContext.Current.User.Identity.Name, список ролей подходит для файла cookie auth, установленного в true или false.
Теперь я понимаю проблему производительности. это важно для меня. но мне также нужно убедиться, что приложение работает правильно.