2013-07-29 7 views
14

Attualmente sto lavorando al progetto ASP.NET MVC 4 con il database Oracle. Ho aggiungere correttamente la stringa di connessione nel mio file web.config come qui:Configurare l'applicazione ASP.NET MVC 4 con il database Oracle

<add name="OracleDBConnString" connectionString="Provider=MSDAORA;Data Source=ISDQA;User ID=isd;Password=isdqa;" providerName="System.Data.OleDB" /> 

Ma quando creo un nuovo progetto, è già avere una classe di autenticazione incorporati. Come posso modificare queste classi una volta per tutte? Desidero modificare l'impostazione predefinita ConnString.

Ecco il mio modello:

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; } 
} 

Ecco il mio controller User:

[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); 
} 

UPDATE

quando cambio la base("DefaultConnection")-base("OracleDBConnString"), ho ottenuto questo errore:

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. 

Nota che ho già aggiunto using System.Data.OleDb; sui miei utilizzi.

risposta

8

Invece di creare una classe speciale è possibile impostare in web.config quale provider di appartenenze si utilizza.

Per Oracle esiste una classe OracleMembershipProvider, che è possibile trovare here. Per MySQL è possibile utilizzare MySQLMembershipProvider. C'è un bell'articolo come è possibile impostarlo: How to Setup and Configure MySql Membership Provider

Inoltre è possibile utilizzare Entity Framework Code First Membership Provider e utilizzare il provider appropriato (guarda su questo articolo: Entity Framework Code-First support for Oracle, MySQL, PostgreSQL and SQLite). Non ho provato questa soluzione, ma sembra promettente.

Se nulla di sopra ti aiuta a scrivere il tuo fornitore di Memebership, ma sono sicuro che puoi trovare qualcosa che già esiste.

Per riassumere: invece di modificare il tipo di connessione, cambiare il provider di appartenenze che sarà specifico per le tue esigenze. Il tuo codice non dovrebbe notare cambiamenti, perché ogni provider di appartenenze eredita la classe di base

+0

Non capisco. Devo cambiare la stringa di connessione? –

+0

A proposito, ho installato il provider di appartenenze CodeFirst. –

+0

@garath Puoi spiegarmi come impostare il provider MemberShip Oracle Guarda la mia risposta qui: http://stackoverflow.com/questions/23094959/using-oracle-membership-provider-in-asp-net-mvc – Chlebta

1

Asp.Net SimpleMembership e Asp.Net Appartenenza sono animali diversi, temo. I modelli Asp.Net MVC4 utilizzano SimpleMembership (WebSecurity.Login).

Vedere la mia risposta sull'utilizzo del provider di appartenenza MySql in Asp.Net MVC4 here. Cambiare semplicemente la stringa di connessione o altre cose non ti aiuterà. Devi trovare un Oracle Asp.Net SimpleMembership o scrivere il tuo.