4

現在ログインしているユーザー Page.User.Identity.Name を表示するマスター ページを持つ ASP.NET サイトに FormsAuthentication を使用しています。

設定でユーザー名を変更できます。変更した場合は、Cookie を更新して、ポストバックでサインアウト/サインインする必要がないようにします。

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

私はおそらくかなりうるさいですが、ユーザー名を変更した後、別のページをリロードまたはロードするまで、マスターページには元のユーザー名が表示されます。

同じポストバック中に新しいユーザー名を表示できるように、現在の Page.User をプログラムで更新する方法はありますか?

4

2 に答える 2

8

MasterMax の提案は私がすることですが、実際にはPage.Uservia を更新できます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);
于 2009-03-17T14:56:26.913 に答える
1

マスター ページ クラスのインスタンスを作成し、ユーザー名に設定するプロパティを公開して、FormsAuthentication コードの直後にそのプロパティを設定できるようにすることができます。

于 2009-03-02T20:30:18.067 に答える