2

最初にコードとDbContextを使用してデータベースを作成しました。

ただし、これは新しいMVC4サイトのセキュリティモデルデータベースとは別に配置されます。

私の質問は、既存のデータベースをセキュリティモデルとどのように組み合わせるか、または正当な理由でそれらを分離しておく必要があるかどうかです。

たとえば、これが最良のソリューションです http://blog.spontaneouspublicity.com/include-asp-net-simple-membership-tables-as-part-of-your-entity-framework-model

これにより、最初にアプリケーションを実行したときにセキュリティモデルと役割が再作成されます。

または、これを行う別の方法がありますか。

4

1 に答える 1

1

このため、新しい MVC と Simplemembership Provider が気に入っています。モデルを asp.net アカウント モデルと非常に簡単に組み合わせることができます。

デフォルトのインターネット テンプレートを使用すると、UsersContext というコンテキストが作成されます。UserProfile オブジェクトにフィールドを追加してデータベースで追跡するなどの簡単なことを行うには、3 つの簡単なことを行う必要があります。

  1. プロパティをモデルに追加します (既定のテンプレートを使用する場合はアカウント モデル内)。
  2. アカウント コントローラーの登録アクションで、新しいフィールド IE を追加します。

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            var db = new UsersContext();
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, Address = model.Address, Company = model.Company, Phone = model.Phone, Country = model.Country, City = model.City, State = model.State, Zip = model.Zip });            
                WebSecurity.Login(model.UserName, model.Password);
    
                return RedirectToAction("Index", "Dashboard");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }
    
        // If we got this far, something failed, redisplay form
        return View(model);
    }
    

渡されたモデルから値を取得し、それらをモデルに一致させた新しいキーワードに注意してください。(モデルバインディングはここで機能する場合と機能しない場合がありますが、まだテストしていません)

3) レジスターのビューとモデルを変更して、必要なすべての情報を渡す

これが奇妙なエラーなしで初めて完璧に機能したとき、私は泣きそうになりました。

幸運を

于 2013-01-03T20:45:14.510 に答える