0

My Usersテーブル(私が作成したテーブル)には、次の列があります。

UserId,UserName,FirstName,LastName,DOB

このコマンドを実行した後

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);

それは私に必要な単純なメンバーシップテーブルを作成しました。

新しいSimpleMembershipAPIを使用して、webpages_Membershipでユーザーの「UnConfirming」または「IsConfirmed」フラグをfalseに設定するにはどうすればよいですか?

(以前は、「Membership」クラスを使用してsimplemembershipに移動する前に、API呼び出しを使用してユーザーを更新できました:Membership.UpdateUser(user);)

4

4 に答える 4

1

SimpleMembership 登録プロセスへの電子メール確認の追加に関するこのブログ投稿を見てください。確認プロセスのしくみについて説明しています。崖っぷちのメモは、新しいユーザーを作成するときに、このような確認を使用するフラグを設定することです。

string confirmationToken = 
   WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true);

これを行うと、CreateUserAndAccount メソッドは一意のトークンを返します。このトークンをリンク付きの電子メールに含めることができるため、ユーザーは有効な電子メール アドレスを提供したことを確認できます。リンクをクリックすると、URL にトークンが渡され、コントローラー アクションはこのようにトークンを確認できます。

[AllowAnonymous]
public ActionResult RegisterConfirmation(string Id)
{
    if (WebSecurity.ConfirmAccount(Id))
    {
        return RedirectToAction("ConfirmationSuccess");
    }
    return RedirectToAction("ConfirmationFailure");
}

ConfirmAccount メソッドは、データベースに一致する未確認のトークンがあるかどうかを確認し、ある場合は isConfirmed フラグを true に設定します。これが true に設定されるまで、ユーザーはログオンできません。

于 2013-02-20T13:47:11.837 に答える
1

アカウントを「未確認」にする方法もわからなかったので、あなたの質問に直接答えることはできません。しかし、私がやったことは、この質問を見つけた人の助けになるかもしれません.

私は基本的にロールをゲートキーパーとして使用しています。新しいアカウントを作成するたびに、そのユーザーを「ユーザー」ロールに追加します。

Roles.AddUserToRole(newUser.Username, "User");

Authorize 属性を使用して、コントローラーへのアクセスを制限します (また、公開したいアクション (たとえば、RegisterUser など) には [AllowAnonymous] を使用します)。次に、各アクション内に、"User" ロールのユーザーのみにアクセスを制限するメソッドを追加します。

if (!Roles.IsUserInRole(role))
{
    throw new HttpResponseException(
        new HttpResponseMessage(HttpStatusCode.Unauthorized));
}

注: 私は Web API を使用していますが、MVC を使用している場合は、はるかに簡単です。各アクションでユーザーがロールに属しているかどうかを手動で確認する代わりに、authorize 属性を使用できます。

[Authorize(Roles = "User")]

ユーザーを「未確認」にしたいときは、「ユーザー」ロールから削除するだけです。

Roles.RemoveUserFromRole(user.Username, "User");

このようにして、ユーザーがクロールして戻ってきた場合、ユーザーとして追加してアカウントを再アクティブ化できます。

于 2013-01-11T21:46:07.447 に答える
1

私がやったことは、SQLクエリを介してそのテーブルを直接更新することでした。それが推奨される方法かどうかはわかりませんが、それは私にとってはうまくいったようです。(あなたの提案もありがとう)。

于 2013-01-15T17:39:38.803 に答える
-1

requireConfirmationToken を true に設定します: (以下に示す 4 番目の値)

WebSecurity.CreateUserAndAccount(viewModel.UserName, viewModel.Password, null, true);

ソース http://www.w3schools.com/aspnet/met_websecurity_createuserandaccount.asp

于 2013-02-20T10:46:28.337 に答える