12

这些天我正在探索 ASP.NET MVC 4。如果有人能回答我的问题,我会很高兴。

我正在建立一个学术项目“项目管理和支持系统”。我设计了自己的数据库,我为我的数据库中的用户(两种用户:将执行任务的员工和分配/雇用任务的客户)有自己的表,我打算创建一个新的会员提供者但是我意识到“这是浪费时间——重新发明轮子”。

现在,我正在使用 SimpleMembership 在 ASP.NET MVC4 上构建会员模型(这是 MVC 应用程序会员服务的未来)。它为 ASP.NET 框架提供了更简洁的会员提供程序,并额外支持 OAuth。

1- 我创建了一个开箱即用的 ASP.NET MVC 4 互联网应用程序来自定义登录、注册和用户管理逻辑以维护用户配置文件表。我添加了三个角色:Admin、Employee、Client

通过这篇博文,我可以自定义注册 http://blog.longle.net/2012/09/25/seding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-自定义用户属性/

2-现在,我正在将此表与我自己数据库中的用户表同步。考虑到我添加了另一个“帐户类型”字段,在注册期间要求用户创建特定的配置文件。

非常感谢任何帮助。

干杯

4

2 回答 2

26

使用 SimpleMembership 有两种方法可以存储和使用该信息进行身份验证。

  1. 您可以使用默认 (UserProfiles) 表,即在“DefaultConnection”字符串指向的数据库中。

  2. 您可以使用您的数据库和其中的表来替换默认的 UserProfiles 表。

选项 1 在其他地方得到了很好的解释。对于选项 2,请按照以下步骤操作:假设您的数据库上下文是 mDbContext,而要用于替换 UserProfiles 的表是员工。

  1. 您的 Employee 模型如下所示

    namespace m.Models
    {
      public class Employee
      {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        public string UserName { get; set; }
    
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Mobile { get; set; }
        public Designation Designation { get; set; }
        .........
    
  2. 你的 DbContext 看起来像这样

    namespace m.Models
    {
        public class mDBContext : DbContext
        {
             DbSet<Employee> Employees { get; set; }
    ......
    
  3. 您需要告诉 WebSecurity 使用您的数据库。

    WebSecurity.InitializeDatabaseConnection("mDBContext", 
      "Employees", "ID", "UserName", autoCreateTables: true);
    
  4. 在 AccountModels 的 RegisterModel 类中添加其他字段

    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 string FirstName { get; set; }
        public string LastName { get; set; }
        public string Mobile { get; set; }
        public Designation Designation { get; set; }
    }
    
  5. 在 AccountController Register 方法中为 HttpPost 替换

    WebSecurity.CreateUserAndAccount(model.UserName, model.
    

    WebSecurity.CreateUserAndAccount(model.UserName, model.Password, 
      new {  FirstName = model.FirstName, LastName = model.LastName, 
             Mobile = model.Mobile});
    
  6. 如果挂起任何更改(或添加迁移),则重建和更新数据库。

于 2013-04-09T12:22:58.890 回答
0

按照以下链接的类似问题的答案进行操作。如果您还有任何问题,请告诉我。

有答案的类似问题

更新

在阅读了您的第一条评论之后,听起来您需要先了解 MVC 的全部内容,然后再接触 SimpleMembership。尝试以下链接。

维基百科

w3schools

MSDN

http://www.asp.net/mvc

于 2013-04-03T00:11:09.720 回答