gpt4 book ai didi

asp.net-mvc - 如何自定义简单的成员资格提供程序以使用我自己的数据库 ASP.NET mvc 4

转载 作者:行者123 更新时间:2023-12-04 00:19:32 25 4
gpt4 key购买 nike

这些天我正在探索 ASP.NET MVC 4。如果有人可以通过回答我的问题来提供帮助,我会很高兴。

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

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

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

通过这篇博文,我可以自定义注册 http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

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

非常感谢任何帮助。

干杯

最佳答案

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

  • 您可以使用默认(UserProfiles)表,即在“DefaultConnection”字符串指向的数据库中。
  • 您可以使用您的数据库和其中的表来替换默认的 UserProfiles 表。

  • 选项 1 在别处有很好的解释。对于选项 2,请按照以下步骤操作:
    假设您的数据库上下文是 mDbContext 并且您要用于替换 UserProfiles 的表是员工。
  • 你的员工模型看起来像这样
    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; }
    .........
  • 你的 DbContext 看起来像这样
    namespace m.Models
    {
    public class mDBContext : DbContext
    {
    DbSet<Employee> Employees { get; set; }
    ......
  • 您需要告诉 WebSecurity 使用您的数据库。
    WebSecurity.InitializeDatabaseConnection("mDBContext", 
    "Employees", "ID", "UserName", autoCreateTables: true);
  • 在 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; }
    }
  • 在 HttpPost 的 AccountController 注册方法中替换
    WebSecurity.CreateUserAndAccount(model.UserName, model.


    WebSecurity.CreateUserAndAccount(model.UserName, model.Password, 
    new { FirstName = model.FirstName, LastName = model.LastName,
    Mobile = model.Mobile});
  • 如果挂起任何更改(或添加迁移),则重建和更新数据库。
  • 关于asp.net-mvc - 如何自定义简单的成员资格提供程序以使用我自己的数据库 ASP.NET mvc 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776640/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com