ASP.NET 4 Membeship架构已更改

时间:2012-08-27 12:20:16

标签: asp.net-mvc entity-framework

我昨天安装了Visual Studio 2012(RTM,通过mytt DreamSpark帐户)并创建了一个演示MVC站点(使用.NET 4.0,因为我希望它在Azure上得到支持)。

我已开始调查该项目,除了使用外部服务(Facebook,Twitter,Windows Live和Google)的内置选项外,我发现整个会员模式已经更改:

新结构包含4个表(UserProfile是第一个代码的approch Entity Framework表)。 请注意,尽管表格前缀是“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 个答案:

答案 0 :(得分:1)

我找到了一些回答我问题的文章。

修改 为什么突然改变: 由于Microsoft已更改默认的ASP.NET MVC 4模板,因此已进行了更改。 提供默认帐户管理的标准“Internet应用程序”模板已更改,现在使用WebMatrix 2帮助程序。 AccountController已被完全重写,以便使用支持第三方集成的SimpleMembership类,并使我们能够使用实体框架代码优先方法。

旧会员提供者的使用 只要我读过,因为使用SimpleMembership的{​​{1}}类不能使用默认的通用提供程序,必须使用内置提供程序或创建ExtendedMembershipProvider自定义提供程序。

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

干杯!