2009-03-02 12 views
4

現在ログインしているユーザー、Page.User.Identity.Nameを表示するマスターページを持つASP.NETサイトに対してFormsAuthenticationを使用しています。プログラムでHttpContext.Userを更新/更新します

彼らは設定でユーザー名を変更することができ、いつそう、彼らはポストバックで背中にサインイン/サインアウトする必要が文句を言わないので、私は彼らのために自分のクッキーを更新します。

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

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

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

答えて

1

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

6

マスターマックスの提案が私のやりたいことですが、Page.UserHttpContext.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); 
関連する問題