私はcreateuserwizardコントロールを使用しています。 CreatedUserイベントでは、ユーザーをロールに追加するためにこのコードを配置しました。FormsAuthentication.SetAuthCookieの動作
protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
if (!Roles.IsUserInRole("Test"))
{
var User= Membership.GetUser();
Roles.AddUserToRole(User.UserName, "Test");
}
string continueUrl = RegisterUser.ContinueDestinationPageUrl;
if (String.IsNullOrEmpty(continueUrl))
{
continueUrl = "~/";
}
Response.Redirect(continueUrl);
}
私はまたMembership.GetUser()
がnull何FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
手段とそれがために使用されますと理由を知りたいと思います。
デフォルトのメンバーシッププロバイダは、ログインしたユーザーを確認するたびにCookieをチェックするのではなく、以前のリクエスト処理段階でチェックします。あなたが 'SetAuthCookie'と同じリクエストに対してnullを返していますが、次のリクエストでユーザーが表示されます。これは遅れていて、簡単な方法を探しています... – bambams