WTM(ASP.NET Core)框架自定义用户管理和注册

背景:WTM框架自带了用户管理,但是很多人使用框架需要配置很多的字段满足用户管理。

一、添加自定义用户类,继承自FrameworkUserBase。同时制定表名为FrameworkUsers。并在数据库上下文中注册。

1、XXX.Models项目中添加自定义用户类

注意:如果不指定表名,自动以的表中的用户无法正常登录。

[Table("FrameworkUsers")]
    public class MyUser : FrameworkUserBase
    {
        [Display(Name = "附加信息1")]
        public string Extra1 { get; set; }
        [Display(Name = "附加信息2")]
        public string Extra2 { get; set; }
    }

2、XXX.DataAccess项目DataContext.cs文件中注册自定义用户类

public DataContext(CS cs)
             : base(cs)
        {
        }

        public DataContext(string cs, DBTypeEnum dbtype)
             : base(cs, dbtype)
        {
        }

        public DbSet<MyUser> MyUsers { get; set; }

二、使用代码生成器生成CURD代码,并为密码添加MD5验证

1、启动项目,用主页菜单功能生成代码。这个就不截图了,大家都会。

2、在XXX.ViewModel中,找到自定义的VM,文件夹名称和自定义类的名称基本一样,就是最后多加了个VMs,例如MyUserVMs。找到MyUserVM.cs文件找到DoAdd方法,并且在base.DoAdd();之前添加Entity.Password = Utils.GetMD5String(Entity.Password);密码验证。

 public override void DoAdd()
        {
            
            Entity.UserRoles = new List<FrameworkUserRole>();
            if (SelectedUserRolesIDs != null)
            {
                foreach (var id in SelectedUserRolesIDs)
                {
                    Entity.UserRoles.Add(new FrameworkUserRole { RoleId = id });
                }
            }

            Entity.UserGroups = new List<FrameworkUserGroup>();
            if (SelectedUserGroupsIDs != null)
            {
                foreach (var id in SelectedUserGroupsIDs)
                {
                    Entity.UserGroups.Add(new FrameworkUserGroup { GroupId = id });
                }
            }
            //添加MD5验证
            Entity.Password = Utils.GetMD5String(Entity.Password);
            base.DoAdd();
        }

这样的话,就初步完成了自定义用户的设置。可以自己添加几个用户试试哈。

三、测试用户登录

在web层中,修改appsettings.json文件中的。"IsQuickDebug":配置项,由false改成true。测试下用户登录和注册。

{
  "ConnectionStrings": [
    {
      "Key": "default",
      "Value": "Server=DESKTOP-ATT1EOK;Database=HiddenPerils_db;Trusted_Connection=True;"
    }
  ],
  "DBType": "SqlServer",
  "IsOldSqlServer": false, 
  "CookiePre": "WTM",
  "EnableLog": true, 
  "LogExceptionOnly": false, 
  "IsQuickDebug": true, //将false改为true
  ...

四、将自定义用户字段添加到注册中

在XXX.ViewModel\HomeVMs中找到 RegVM.cs文件。

1、添加自定义的用户字段。

public class RegVM : BaseVM
    {
        /// <summary>
        /// 添加自定义字段
        /// </summary>
        [Display(Name = "生日")]
        public DateTime Birthday { get; set; }
        [Display(Name = "账号")]
        [Required(AllowEmptyStrings = false)]
        [StringLength(50)]
        public string ITCode { get; set; }
        [Display(Name = "姓名")]
        [Required(AllowEmptyStrings = false)]
        [StringLength(50)]
        public string Name { get; set; }
        [Display(Name = "密码")]
        [Required(AllowEmptyStrings = false)]
        [StringLength(50, ErrorMessage = "{0}最多输入{1}个字符")]
        public string Password { get; set; }
        [Display(Name = "确认密码")]
        [Required(AllowEmptyStrings = false)]
        [StringLength(50, ErrorMessage = "{0}stringmax{1}")]
        public string NewPasswordComfirm { get; set; }
...

2、修改DoReg方法:将FrameworkUserBase全部修改为自定义的用户类名例如MyUser,new MyUser的时候注意给自定义字段赋值。

/// <summary>
        /// 进行登录
        /// </summary>
        /// <returns>登录用户的信息</returns>
        public bool DoReg()
        {
            if (Password != NewPasswordComfirm)
            {
                MSD.AddModelError("NewPasswordComfirm", Localizer["PasswordNotSame"]);
                return false;
            }
            var exist = DC.Set<MyUser>().Any(x => x.ITCode.ToLower() == ITCode.ToLower());

            if (exist == true)
            {
                MSD.AddModelError("ITCode", "账号重复");
                return false;
            }
            MyUser user = new MyUser
            {
                ITCode = ITCode,
                Name = Name,
                Password = Utils.GetMD5String(Password),
                IsValid = true,
                CellPhone = CellPhone,
                Email = Email,
                //自定义字段赋值
                Birthday = Birthday
            };
            DC.Set<MyUser>().Add(user);
            DC.SaveChanges();
            return true;
        }

3、修改Reg视图,添加相应输入框。

@model HiddenPerils.ViewModel.HomeVMs.RegVM


<p style="text-align:center;margin-top:10px;font-size:16px">新用户注册</p>
<wt:form vm="@Model">
    <wt:textbox field="ITCode" />
    <wt:textbox field="Name" />
    <wt:textbox is-password="true" field="Password" />
    <wt:textbox is-password="true" field="NewPasswordComfirm" />
    <wt:textbox field="Email" />
    <wt:textbox field="CellPhone" />
//自定义字段
    <wt:datetime field="Birthday" />
    <wt:row align="AlignEnum.Center">
        <wt:submitbutton size=" ButtonSizeEnum.Normal" />
    </wt:row>
</wt:form>

启动项目,查看注册。对应的自定义字段完成添加。

猜你喜欢

转载自blog.csdn.net/sxy_student/article/details/104603405