7

UserProfileという名前のテーブルにカスタム フィールドを追加し、ClassOfYear次のように登録時にプロファイルにデータを取得できます。

var confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName,
    model.Password,
    propertyValues: new { ClassOfYear = model.ClassOfYear },
    requireConfirmationToken: true);

ただし、管理時にプロファイルを更新できるようにしたいのですが、その方法が見つからないようです。自分でテーブルを更新する必要がありますか? UserProfileそうでない場合、これを行う適切な方法は何ですか?

参考までに、念のため、データ アクセス レイヤーとして Dapper を使用しています。しかし、述べたように、それが私がUserProfileやるべきことであれば、Dapper を介してテーブルを更新することができます。WebSecurityカスタム ユーザー プロファイル フィールドがメソッドに統合されているため、クラスまたは同様のものには既に方法があると考えましたCreateUserAndAccount

皆さんありがとう!

4

2 に答える 2

4

SimpleMembershipProvider コードには、作成時以外に追加フィールドで何かを行うものは何もありません。

ORM から自分で値をクエリするだけです。

WebSecurity.GetUserId(User.Identity.Name) を使用してユーザーの ID を取得し、次に Dapper を使用して UserProfile テーブルにクエリを実行できます。

于 2012-11-12T16:59:08.117 に答える
2

誰かが同じ問題に直面している場合に備えて。SimpleMembership と何度も戦った後、webpages_Membership とカスタム ユーザー テーブルの両方に値を設定するソリューションを手に入れました。明確にするために、私のコードに従ってください:

public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            TUsuario userDTO= new TUSer()
                {
                    Name = model.Name,
                    Login = model.Login,
                    Pass = model.Pass.ToString(CultureInfo.InvariantCulture),
                    Active = true,
                    IdCompany = model.IdCompany,
                    IdUserGroup = model.IdUserGroup,
                };
            try
            {
                WebSecurity.CreateUserAndAccount(model.Login, model.Pass, new { IdUser = new UserDAL().Seq.NextVal(), Name = userDTO.Name, Login = userDTO.Login, Active = userDTO.Active, Pass = userDTO.Pass, IdCompany = userDTO.IdCompany, IdUserGroup = userDTO.IdUserGroup });

                WebSecurity.Login(model.Login, model.Pass);

フレームワークをたくさん呪った後、それは私に新鮮な空気の至福を与えました:)

PS.: users テーブルは、WebSecurity.InitializeDatabaseConnection 関数を使用して global.asax ファイルで指定されます。

于 2013-03-21T13:09:47.537 に答える