現在、Oracleデータベースを使用したASP.NET MVC 4プロジェクトに取り組んでいます。次のように、Web.configファイルに接続文字列を正常に追加しました。
_<add name="OracleDBConnString" connectionString="Provider=MSDAORA;Data Source=ISDQA;User ID=isd;Password=isdqa;" providerName="System.Data.OleDB" />
_
しかし、私が新しいプロジェクトを作成するときは、組み込みの認証クラスがすでにあります。これらのクラスを一度だけ変更するにはどうすればよいですか? デフォルトのConnString
を変更したい。
これが私のモデルです:
_public class UsersContext : DbContext
{
public UsersContext()
: base("OracleDBConnString")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
public class LoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
_
これが私のユーザーコントローラーです:
_[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
//I WANT TO MODIFY THIS PART
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
_
[〜#〜]更新[〜#〜]
base("DefaultConnection")
をbase("OracleDBConnString")
に変更すると、次のエラーが発生しました。
_Server Error in '/' Application.
A null was returned after calling the 'get_ProviderFactory' method on a store provider instance of type 'System.Data.OleDb.OleDbConnection'. The store provider might not be functioning correctly.
_
私はすでに_using System.Data.OleDb;
_を使用に追加していることに注意してください。
特別なクラスを作成する代わりに、使用するメンバーシッププロバイダーをweb.configで設定できます。
Oracleの場合、OracleMembershipProvider
クラスが存在します。このクラスは here です。 MySQLの場合、MySQLMembershipProvider
を使用できます。どのように設定するかについての素晴らしい記事があります: MySqlメンバーシッププロバイダーを設定および構成する方法
さらに Entity Framework Code First Membership Provider を使用して適切なプロバイダーを使用できます(この記事をご覧ください: Entity Framework Code-First support for Oracle、MySQL、PostgreSQL and SQLite )。私はこのソリューションを試しませんでしたが、有望に見えます。
上記のいずれも役に立たない場合は、独自のMemebershipプロバイダーを作成できますが、すでに存在するものを見つけることができると思います。
要約すると、接続タイプを変更する代わりに、ニーズに固有のメンバーシッププロバイダーを変更します。すべてのメンバーシッププロバイダーがbase MemebershipProivder
クラスを継承するため、コードは変更に気付かないはずです。
Asp.Net SimpleMembershipとAsp.Net Membershipは別の獣です、私は恐れています。 Asp.Net MVC4テンプレートは、SimpleMembership(WebSecurity.Login)を使用します。
MySqlメンバーシッププロバイダーの使用に関する私の回答をAsp.Net MVC4 here で参照してください。接続文字列などを変更するだけでは効果がありません。 Oracle Asp.Net SimpleMembershipを見つけるか、独自に作成する必要があります。