0

LoginForm の解決策を見つけたいです。

モデル (例: Doctor.cs) を AccountModel.cs (MVC アプリケーション セキュリティ - LogOn、Register、または ChangePassword) に参加させる方法を教えてください。

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, "question", "answer", true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                MigrateShoppingCart(model.UserName); 

                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

これはDoctor.csです

パブリック クラス ドキュメント {

    public int DocId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string DoktorArtUrl { get; set;

}

助けてください、私はそれが欲しいだけです acount を作成するとき、DBに新しいDoctorを作成し、MVC Securityに新しいユーザーを作成します。また、プロファイルビューを実行する方法を教えてください(セキュリティと組み合わされたDocsテーブルの値を表示します(ログイン後))

PS。私の英語でごめんなさい

4

1 に答える 1

1

組み込みの軽量な SimpleMembership 承認を使用することをお勧めします。Asp.NET メンバーシップ テーブルと特定の UserProfile (または Doctor) テーブルを自動的に提供して、他の関連プロパティを格納します。

これは、Visual Studio の MVC 4 インターネット アプリケーション テンプレートですぐに使用できます。

次のことをお勧めします。

private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    AuthConfig.RegisterAuth();

    LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}

public class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        using (var context = new UsersContext())
            context.UserProfiles.Find(1);

        if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Doctor", "DocId", "UserName", autoCreateTables: true);
    }
}

これは、global.asax の application_start メソッドからインターネット アプリケーションの simplemembership 認証を初期化するためです。

ご覧のとおり、関連するユーザー情報を格納するために使用されるテーブル/クラスは、デフォルトで「UserProfile」と呼ばれます。最初に Entity Framework コードを使用して "UserProfile" (アカウント モデル) クラスを変更するだけで、データ モデルが自動的に調整されます。

例:

[Table("Doctor")]
public class UserProfile // can also be public class Doctor
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int DocId{ get; set; }
    public string UserName { get; set; }

    //other relevant properties
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string DoktorArtUrl { get; set;
    //etc
}

この情報があなたを正しい方向に導くことができることを願っています。お気づきの点がございましたら、お気軽にお尋ねください。

于 2013-09-17T13:29:23.437 に答える