2012-09-13 20 views
5

私はASP.net MVC 3 Webアプリケーションを実行していて、メンバシッププロバイダを使用しています。ユーザー(または管理者)が既存のアカウントのユーザー名を変更できるようにすることが可能かどうかを知りたいですか?私はこれを行う方法を見つけていない。ユーザー名は電子メールアドレスではありませんが、新しい名前を割り当てようとする前に、一意性が検証されます。ユーザー名を変更するASP.net MVC 3メンバーシップ

助けていただけたら幸いです!

答えて

7

メンバーシップ・プロバイダは、ユーザー名を更新する方法を提供していません。この変更を許可するには、メンバーシップ・プロバイダーのUpdateUserメソッドを拡張するか、メンバーシップ・テーブルと直接対話する必要があります。あなたがこのアプローチをしかし、いくつかの項目

  1. 更新で覚えておいて、あなたは多くのユーザーが作成されたときに何が起こるかのように、ユーザー名の一意性を確認する必要があります。

  2. ユーザがログインしてユーザ名を変更した場合、強制的にログアウトしてログインし直すか、AuthenticationTicketクッキーを再発行する必要があります。その理由は、ユーザー名を変更すると、authTicket Cookieに格納されているユーザー名と実際のユーザー名が一致しなくなるためです。 HttpContext.Identity.User.Nameを使用してデータストアを照会したり、コンテンツの承認を確認したりすると、そのユーザー名が存在しなくなったため、結果が返されなくなります。

+0

AuthenticationTicketクッキーはどのように再発行されますか?推測では、FormsAuthentication.SetAuthCookie()を呼び出すことをお勧めしますが、おそらくあなたは知っていますか? –

+1

あなたはそれを持っています。基本的には、新しい認証Cookieを作成し、それを返信して、以前の認証Cookieを上書きします。誰かがどこかで問題を引き起こすかもしれないと思う唯一のことは、クッキーの有効期限がリセットされることです。 – Tommy

+0

私は新しいユーザ名(そしてcreatePersistentCookieがfalseに設定されている)でそれを呼び出しましたが、古いユーザ名も新しいユーザもログインに使用できないことがわかりました。 –

関連する問題