sql >> データベース >  >> RDS >> PostgreSQL

Asp.net MVC4、PostgreSQL、SimpleMembership

    問題は、デフォルトではなくAccountControllerの実装にあります。

    Ok。これが解決策です

    私はPostgreSQLのこのメンバーシップとロールプロバイダーが好きです https://code.google.com/p/pgprovider / 起動時に必要なすべてのテーブルを自動的に作成するため))

    インストール:

    インストールパッケージpgProvider

    Web.configに追加:

      <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <connectionStrings>
        <add name="MovieDBContext" connectionString="Server=127.0.0.1;Port=5432;Database=postgres;User Id=postgres;Password=000;" providerName="Npgsql" />
        <add name="pgProvider" connectionString="Server=127.0.0.1;Port=5432;Database=postgres;User Id=postgres;Password=000;" providerName="Npgsql" />    
      </connectionStrings>
    
        <membership defaultProvider="pgMembershipProvider">
          <providers>
            <clear />
            <add name="pgMembershipProvider" type="pgProvider.pgMembershipProvider, pgProvider" applicationName="MvcMovie"/>
          </providers>
        </membership>
        <roleManager defaultProvider="pgRoleProvider">
          <providers>
            <clear />
            <add name="pgRoleProvider" type="pgProvider.pgRoleProvider, pgProvider" applicationName="MvcMovie"/>
          </providers>
        </roleManager>
    

    次に、Web.configにも追加します:

      <appSettings>
        //---
        <add key="enableSimpleMembership" value="false"/>
        <add key="autoFormsAuthentication" value="false"/>    
      </appSettings>
    

    次に、デフォルトで作成されたAccountControllerを削除します。

    そして最後にAccountControllerを追加します:

    public class AccountController : Controller 
    {
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;        
            return View();
        }
    
    [HttpPost]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
        return View(model);
    }
    
    public ActionResult LogOff()
    {
        FormsAuthentication.SignOut();
    
        return RedirectToAction("Login", "Account");
    }
    
    public ActionResult Register()
    {
        return View();
    }
    
    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {           
        if (ModelState.IsValid)
        {
            MembershipCreateStatus status;
    
            MembershipUser membershipUser = (Membership.Provider).CreateUser(
                model.UserName, model.Password, null,null,null, true, null, out status);
    
            if (membershipUser != null)
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "Registration error");
            }
        }
        return View(model);
    }
    

    }

    プロバイダーのソースコードは次のとおりです: https:/ /code.google.com/p/pgprovider/source/browse/trunk/pgProvider/pgMembershipProvider.cs

    それだけです。

    デフォルトで作成されるログインビューと登録ビューで機能します。




    1. 連絡先をデータベースに挿入しますが、既存の連絡先を複製したくない

    2. postgreSQLに存在しない場合は一意のインデックスを作成する

    3. MySQLテーブルにインデックスを表示する

    4. SSMSを使用してSQLServerエージェントジョブを作成する