在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《Owin+ASP.NET Identity浅析系列》来祭奠那逝去的……

  上一篇博客讲了用户登录注册问题,这篇说下如何扩展用户属性,毕竟我们的项目中用户不可能只有用户名、邮箱、手机号不是,下面为我们的用户表新增两个属性:所在城市和年龄

第一步:修改数据库表,新增两个字段

create table aspnetusers
(
Id char(32) primary key,
Email varchar(50) null comment '用户邮箱',
EmailConfirmed bit not null comment '是否认证邮箱',
PasswordHash varchar(100) null comment '账户密码',
SecurityStamp varchar(100) null comment '防伪印章',
PhoneNumber varchar(100) null comment '用户手机',
PhoneNumberConfirmed bit not null comment '是否认证手机',
TwoFactorEnabled bit not null comment '是否启用双重身份验证',
LockoutEndDateUtc datetime null comment '锁定结束时间',
LockoutEnabled bit not null comment '是否启用锁定',
AccessFailedCount int not null comment '登陆失败次数',
UserName varchar(50) not null comment '用户名称',
City varchar(50) null comment '所在城市',
Age int default 0 not null comment '今年几何'
) comment '用户表';

第二步:在ApplicationUser类中加入对应的属性

// 可以通过向 ApplicationUser 类添加更多属性来为用户添加配置文件数据。若要了解详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=317594。
public class ApplicationUser : IdentityUser
{
public virtual string City { get; set; } public virtual int Age { get; set; } public ApplicationUser()
{
this.Id = System.Guid.NewGuid().ToString("N");
} public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// 请注意,authenticationType 必须与 CookieAuthenticationOptions.AuthenticationType 中定义的相应项匹配
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// 在此处添加自定义用户声明
return userIdentity;
}
}

第三步:修改用户注册代码(一套是默认的注册方式,一套是自定义注册方式)

  默认注册方式代码修改如下:

var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, City = model.City, Age = model.Age };

var result = await UserManager.CreateAsync(user, model.Password);

if (result.Succeeded)
{
return Json(new { Flag = true, Content = "注册成功!!!" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { Flag = false, Content = "注册失败!!!" }, JsonRequestBehavior.AllowGet);
}

  自定义注册方式代码修改如下:

var db = new Data.DataContext();

db.Members.Add(new Data.DomainModels.Member()
{
Id = Guid.NewGuid().ToString("N"),
SecurityStamp = Guid.NewGuid().ToString(),
Email = model.Email,
PasswordHash = UserManager.PasswordHasher.HashPassword(model.Password),
UserName = model.UserName,
City=model.City,
Age=model.Age
}); var result = await db.SaveChangesAsync(); if (result > 0)
{
return Json(new { Flag = true, Content = "注册成功!!!" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { Flag = false, Content = "注册失败!!!" }, JsonRequestBehavior.AllowGet);
}

Data.DomainModels.Member是映射数据库user表的实体类

    [Table("aspnetusers")]
public class Member
{
public string Id { get; set; } public string Email { get; set; } public bool EmailConfirmed { get; set; } public string PasswordHash { get; set; } public string SecurityStamp { get; set; } public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } public bool TwoFactorEnabled { get; set; } public DateTime? LockoutEndDateUtc { get; set; } public bool LockoutEnabled { get; set; } public int AccessFailedCount { get; set; } public string UserName { get; set; } public string City { get; set; } public int Age { get; set; }
}

最新文章

  1. linux安装apache
  2. [Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验
  3. Python解析命令行读取参数 -- argparse模块
  4. struts2学习笔记之五:表单数据收集的几种方式
  5. tomcat+javaWeb+spring的一个都市供求管理系统
  6. 【EM算法】EM(转)
  7. Xcode5 运行程序 提示IOS 模拟器未能安装此应用程序
  8. [译]GLUT教程 - glutPostRedisplay函数
  9. C语言数组初始化全部为0
  10. Unix Shell 通配符、转义字符、元字符、特殊字符
  11. JavaSE学习总结第20天_IO流2
  12. Python之路Day19
  13. MySQL语句相关经验总结
  14. js DOM操作---登录例子总结
  15. leetcode-53.最大子序和
  16. FTP上传心得
  17. BGP笔记
  18. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
  19. java的锁机制——synchronized
  20. @SuppressLint("NewApi")和@TargetApi()的区别

热门文章

  1. J2EE企业级应用架构
  2. mySql连接报错
  3. cf1060C. Maximum Subrectangle(思维 枚举)
  4. JavaWeb学习总结(六):HttpServletRespone对象(二)
  5. XAMPP添加二级域名
  6. js 数组转json,json转数组
  7. C++笔记(1)----此运算符函数的参数太多
  8. JavaScript : Array assignment creates reference not copy
  9. 《APP移动终端决胜之道视觉设计艺术》学习笔记
  10. xshell5 可用注册码