2013-03-27 28 views
2

我想弄清楚如何設置ASP.Net MVC 4的簡單成員資格。在當前數據庫中存放用戶的表格具有不同的模式,然後是'dbo'。初始化我的數據庫連接時如何指定模式:ASP.Net MVC 4簡單會員指定架構

  WebSecurity.InitializeDatabaseConnection 
      (
       connectionStringName: "GuessAListConnection", 
       userTableName: "UserProfile", 
       userIdColumn: "UserId", 
       userNameColumn: "UserName", 
       autoCreateTables: false 
      ); 

模式沒有選項。我試圖將附加模式添加到userTableName,但會產生錯誤。有什麼建議麼?

感謝

湯姆

+1

看看這個主題: 2013-03-27 06:13:01

回答

1

WebSecurity會使用任何數據庫用戶的默認架構。沒有辦法指定我知道的不同模式。

1

我發現了另一種解決方案,如果您的用戶/身份驗證表與dbo(或任何數據庫用戶的默認架構)不同,那就是使用視圖。

在我的數據庫中,我的用戶/認證表被限定爲「安全」模式。我也有一個Person模式,在Person模式下生活。我在Person表中只存儲名字,姓氏。

我創建的拉動所有的表一起進行驗證和我返回以下字段的看法:

用戶ID,用戶名,PERSONID,名字,姓氏,AuthenticationType,LastLoginDate,IsLockedOut

在我的應用程序,我可以通過許多不同的方式對用戶進行身份驗證:表單,Windows,Facebook,Twitter等。UserId,UserName與不同的身份驗證類型相關。

這裏是在ASP.Net MVC我的用戶配置類:

[Table("__vwRegisteredUser")] 
    public class UserProfile 
    { 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public String UserName { get; set; } 
    public int PersonId { get; set; } 
    public String FirstName { get; set; } 
    public String LastName { get; set; } 
    public String AuthenticationTypeName { get; set; } 
    public Boolean IsLockedOut { get; set; } 
    public DateTime LastLoginDate { get; set; } 

    public int Id 
    { 
     get 
     { 
      return PersonId; 
     } 
    } 

    public String Name 
    { 
     get 
     { 
      return String.Format("{0} {1}", FirstName, LastName); 
     } 
    } 
} 

通知我使用的表屬性的看法。我還將PersonId作爲Id屬性返回,並將FirstName和LastName連接爲Name屬性。用戶名是從我的認證類型(Windows用戶名,電子郵件地址,如果我使用表單身份驗證,或任何Facebook或Twitter返回的)返回的值。因此,我的Security.Authentication表中沒有UserName的一致性。

初始化數據庫連接仍然需要一張表,以便SimpleMembership生成成員資格表。有可能有一個自定義會員表的方法,但我還沒有想到。