2013-07-29 1 views
14

В настоящее время я работаю над проектом ASP.NET MVC 4 с базой данных Oracle. Я успешно добавить строку подключения в моем файле Web.config, как здесь:Настройка приложения ASP.NET MVC 4 с базой данных Oracle

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

UPDATE

Когда я изменить 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; на мои сообщения.

ответ

8

Вместо создания специального класса вы можете настроить в web.config поставщик членства, который вы используете.

Для Oracle существует класс OracleMembershipProvider, который вы можете найти here. Для MySQL вы можете использовать MySQLMembershipProvider. Существует хорошая статья о том, как вы можете ее настроить: How to Setup and Configure MySql Membership Provider

Кроме того, вы можете использовать Entity Framework Code First Membership Provider и использовать надлежащего поставщика (смотрите по этой статье: Entity Framework Code-First support for Oracle, MySQL, PostgreSQL and SQLite). Я не пробовал это решение, но он выглядит многообещающим.

Если ничто из этого не помогает, вы можете написать свой собственный провайдер Memebership, но я уверен, что вы можете найти то, что уже существует.

Подводя итог: вместо изменения типа соединения, измените членский провайдер, который будет определен для ваших нужд. Ваш код не должен замечать изменения, поскольку каждый поставщик членства наследует базу MemebershipProivder класс

+0

Я не понимаю. Мне нужно изменить строку подключения? –

+0

Кстати, я установил провайдера членства CodeFirst. –

+0

@garath Можете ли вы объяснить мне, как установить поставщика Oracle MemberShip? Посмотрите на мой ответ здесь: http://stackoverflow.com/questions/23094959/using-oracle-membership-provider-in-asp-net-mvc – Chlebta

1

Asp.Net SimpleMembership и членство в Asp.Net - разные животные, я боюсь. Шаблоны Asp.Net MVC4 используют SimpleMembership (WebSecurity.Login).

См. Мой ответ о использовании провайдера членства MySql в Asp.Net MVC4 here. Простое изменение строки подключения или других вещей вам не поможет. Вам нужно найти SimpleShiphip Oracle Asp.Net или написать свой собственный.