在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《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; }
}

Owin+ASP.NET Identity浅析系列(二)扩展用户属性的更多相关文章

  1. Owin+ASP.NET Identity浅析系列(四)实现用户角色

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

  2. Owin+ASP.NET Identity浅析系列(三)框架结构分析

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 前两篇博客仅仅说了下功能如何 ...

  3. Owin+ASP.NET Identity浅析系列(五)接入第三方登录

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… OK,用户角色实现后,我们回 ...

  4. Owin+ASP.NET Identity浅析系列(一)用户登录注册

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

  5. ASP.NET Identity入门系列教程(一) 初识Identity

    摘要 通过本文你将了解ASP.NET身份验证机制,表单认证的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要优势. 目录 身份验证(Authentic ...

  6. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

  7. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  8. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  9. ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

随机推荐

  1. 01 使用Git基本方法

    什么是Git? Git是目前世界上最先进的分布式版本控制系统(没有之一). 你得先有一个Git仓库,才能进行操作.创库就是Git存放你要保存的快照的数据的地方. 拥有一个Git仓库,有两种方法. 创建 ...

  2. Spring Boot学习笔记(一)与JSP整合

    项目结构展示 在webapp目录下面手动创建JSP的目录和web.xml 创建web.xml只是为了不报错,在SpringBoot的项目中实际上用不到web.xml 打开pom.xml把框住的地方改成 ...

  3. groovy集合

    groovy集合可以直接在语言中使用,因为它默认已经导入包了. 不需要初始化对象,也不需要专门的类. 集合是groovy语言本地成员.Groovy语法提供了本地列表和相应的映射. 每个Groovy集合 ...

  4. UVA401(回文子串和镜像串)

    可以先设一个常量镜像串,直接返回比较 #include <iostream> #include <string> #include <cstring> #inclu ...

  5. composer gitlab 搭建私包

    一.建立私包git 1.执行composer init 根据提示生成composer.json 2.编辑composer.json 目录格式 { "name": "iar ...

  6. php中怎么导入自己写的类

    如果写的类是写在当前php文件内,就直接实例化若你的类写在其他的php文件里,就要先用include或require,将类文件引入<?php include("class.php&qu ...

  7. css实现中间文字,两边横线效果

    1. vertical-align属性实现效果: vertical-align 属性设置元素的垂直对齐方式. 该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐.允许指定负长度值和百分比值. ...

  8. js中windows的函数(随机数,计时器的实现)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Fast Walsh-Hadamard Transform——快速沃尔什变换(二)

    上次的博客有点模糊的说...我把思路和算法实现说一说吧... 思路 关于快速沃尔什变换,为了方便起见,我们采用线性变换(非线性变换不会搞). 那么,就会有一个变化前各数值在变换后各处的系数,即前一篇博 ...

  10. js点击事件在苹果端失效的问题

    在安卓机上,我们随意定义点击事件也能够在找到点击的元素,但是在苹果端上就是不行,怎么点击都没有效果.这是因为在苹果机上window禁止了手指误点功能,必须解除这一功能,或者给点击事件指引某个元素上绑定 ...