2012-08-27 21 views
0

我昨天安裝了Visual Studio 2012(RTM,通過mytt DreamSpark帳戶),並創建了一個演示MVC站點(使用.NET 4.0,因爲我希望它在Azure上受支持)。ASP.NET 4 Membeship架構已更改

我已經開始調查該項目,除了使用外部服務(Facebook,Twitter,Windows Live和Google)的內置選項外,我發現整個會員模式已被更改:

新結構包含4個表(UserProfile是第一個代碼接近實體框架表)。 請注意,雖然表前綴是「webpages_」,但它是一個適當的MVC 4站點。

我已經打開了AccountModels.cs文件,發現它已被更改過:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Data.Entity; 
using System.Globalization; 
using System.Web.Mvc; 
using System.Web.Security; 

namespace MyGuestbook.Models 
{ 
    public class UsersContext : DbContext 
    { 
     public UsersContext() 
      : base("DefaultConnection") 
     { 
     } 

     public DbSet<UserProfile> UserProfiles { get; set; } 
    } 

    [Table("UserProfile")] 
    public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 
    } 

    public class RegisterExternalLoginModel 
    { 
     [Required] 
     [Display(Name = "User name")] 
     public string UserName { get; set; } 

     public string ExternalLoginData { get; set; } 
    } 

    public class LocalPasswordModel 
    { 
     [Required] 
     [DataType(DataType.Password)] 
     [Display(Name = "Current password")] 
     public string OldPassword { get; set; } 

     [Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [DataType(DataType.Password)] 
     [Display(Name = "New password")] 
     public string NewPassword { get; set; } 

     [DataType(DataType.Password)] 
     [Display(Name = "Confirm new password")] 
     [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] 
     public string ConfirmPassword { 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; } 
    } 

    public class RegisterModel 
    { 
     [Required] 
     [Display(Name = "User name")] 
     public string UserName { get; set; } 

     [Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [DataType(DataType.Password)] 
     [Display(Name = "Password")] 
     public string Password { get; set; } 

     [DataType(DataType.Password)] 
     [Display(Name = "Confirm password")] 
     [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
     public string ConfirmPassword { get; set; } 
    } 

    public class ExternalLogin 
    { 
     public string Provider { get; set; } 
     public string ProviderDisplayName { get; set; } 
     public string ProviderUserId { get; set; } 
    } 
} 

所以我想問: - 這是否新的用戶結構(即由asp_regsql產生.exe)或者這是一個特定於模板的結構? - 有人有關於新結構的文檔以及如何與其結合? - 有人知道如何將舊結構的「舊」項目(例如MVC 3項目)遷移到新結構?

謝謝! :)

回答

1

我發現了一些文章,回答我的問題。

編輯: 爲什麼突然改變: 的變化已經作出,因爲微軟已經更改了默認的ASP.NET MVC 4模板。 默認帳戶管理的標準「Internet應用程序」模板已更改,現在使用WebMatrix 2助手。 AccountController已被完全重寫,以便使用SimpleMembership類來支持第三方集成,並使我們能夠使用實體框架代碼優先方法。

使用老的成員資格提供 只要我讀過的,因爲使用ExtendedMembershipProviderSimpleMembership類,你可以不使用默認的通用供應商,並且必須使用內置的提供商或創建ExtendedMembershipProvider定義提供。

更多信息可以在這裏找到: Implementing membership providers using the new ASP.NET WebForms and ASP.NET MVC 4 template

乾杯!

+0

請在此處總結或引用關鍵位。鏈接腐爛發生,渲染鏈接只回答完全無用。 –

+0

上面的鏈接總結了傳統ASP.NET方案與ASP.NET MVC 4使用的新方案和項目模板之間的區別。我的問題的答案是文章內容......沒有具體的答案整個問題。 –