Программно обновлять / обновлять HttpContext.User - PullRequest
4 голосов
/ 02 марта 2009

Я использую FormsAuthentication для сайта ASP.NET, на главной странице которого отображается текущий вошедший в систему пользователь Page.User.Identity.Name.

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

FormsAuthentication.SignOut();
FormsAuthentication.SetAuthCookie(username, false);

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

Есть ли способ программно обновить текущий Page.User, чтобы его новое имя пользователя могло отображаться во время той же обратной передачи?

Ответы [ 2 ]

6 голосов
/ 17 марта 2009

Хотя предложение MasterMax и есть то, что я хотел бы сделать, вы можете обновить Page.User через HttpContext.Current.User.

Если вам известны роли пользователя (или вы не используете авторизацию на основе ролей), вы можете воспользоваться классом System.Security.Principal.GenericPrincipal:

string newUsername = "New Username";
string[] roles = new string[] {"Role1", "Role2"};

HttpContext.Current.User = 
   new GenericPrincipal(new GenericIdentity(newUserName), roles);
1 голос
/ 02 марта 2009

Вы можете создать экземпляр класса своей мастер-страницы и сделать общедоступным свойство, которое вы устанавливаете для имени пользователя, чтобы вы могли установить это свойство сразу после кода FormsAuthentication.

...