2013-07-29 115 views
14

我目前正在使用Oracle數據庫處理ASP.NET MVC 4項目。我已經成功添加連接字符串在我的Web.config文件喜歡這裏:使用Oracle數據庫配置ASP.NET MVC 4應用程序

​​3210

但是,當我創建一個新項目,它已經有一個內置的身份驗證類。我怎樣才能一次又一次修改這些類? 我想更改默認的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。只需更改連接字符串或其他內容不會對您有所幫助。你需要找到一個Oracle Asp.Net SimpleMembership或寫你自己的。

相關問題