Asp.Net Identity 深度解析 之 注册登录的扩展

 

关于权限每个系统都有自己的解决方案,今天我们来讨论一下微软的权限框架Asp.Net Identity ,介绍如下  http://www.asp.net/identity 这里不在赘余。

很多人认为 Asp.Net Identity 不好用,很难控制,其实不然,如果去认真研究会发现很好用,现在我们一起来学习这套权限框架。

我这里的环境是VS2013 Update 3, 所以新建一个MVC5项目的时候 Asp.Net Identity 是2.0版本。

项目新建完成后我们运行一下 先看一下注册:

这里是使用电子邮件作为登录名使用,和前一版本有所区别,如果你认为还可以使用111111作为密码那就错大了。

密码难度明显提升,你也许或想,我不需要真么高强度的密码,我就想要111111作为密码,别着急,后面博客会有介绍.

输入邮箱和密码就可以注册成功 。

关键代码入下:

增加了很多异步操作。

现在我们来扩展这个注册功能,加入更加真实的数据

找到RegisterViewModel.cs 添加入下代码:

 #region 扩展

        [Display(Name = "用户名")]
public string UserName { get; set; } [Display(Name = "电话(手机/固话)")]
[Phone]
public string PhoneNumber { get; set; }
#endregion

然后我们修改Register.cshtml  添加如下代码:

 1   <div class="form-group">
2 @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
3 <div class="col-md-10">
4 @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
5 </div>
6 </div>
7 <div class="form-group">
8 @Html.LabelFor(m => m.PhoneNumber, new { @class = "col-md-2 control-label" })
9 <div class="col-md-10">
10 @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "form-control" })
11 </div>
12 </div>

下面我们来看一下效果

到这里我们的扩展基本结束,我们来修改扩展后的Register Action

新建一个 RegisterExtension Action

 1  [HttpPost]
2 [AllowAnonymous]
3 [ValidateAntiForgeryToken]
4 public async Task<ActionResult> RegisterExtension(RegisterViewModel model)
5 {
6 if (ModelState.IsValid)
7 {
//这里是扩展的代码
8 var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, PhoneNumber = model.PhoneNumber };

9 var result = await UserManager.CreateAsync(user, model.Password);
10 if (result.Succeeded)
11 {
12 await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
13 // 有关如何启用帐户确认和密码重置的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=320771
14 // 发送包含此链接的电子邮件
15 // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
16 // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
17 // await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href=\"" + callbackUrl + "\">這裏</a>来确认你的帐户");
18 return RedirectToAction("Index", "Home");
19 }
20 AddErrors(result);
21 }
22 // 如果我们进行到这一步时某个地方出错,则重新显示表单
23 return View(model);
24 }

细心的朋友可能已经注意到 ,数据库字段并没有做修改,是因为 数据库中有UserName,和PhoneNumber 这两个字段

运行项目查看效果 :

点击注册后 效果如下

注册成功,登陆成功,现在我们的一个注册扩展已经完成了。

如果你想要在登陆页面将邮箱改为用户名,我们可以这样做:

修改Login.cshtml 和 Login Action 将 Email ==> UserName 即可。

下一篇,我们将会讨论 如何添加角色,以及如何为用户添加角色,敬请期待,文章中如有问题欢迎指出。

 
 

微软的权限框架Asp.Net Identity的更多相关文章

  1. 框架Asp.net Identity

    框架Asp.net Identity 在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp ...

  2. 全新的membership框架Asp.net Identity(1)——.Net membership的历史

    在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改 ...

  3. 全新的membership框架Asp.net Identity

    在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改 ...

  4. 全新的membership框架Asp.net Identity(2)——绕不过的Claims

    本来想直接就开始介绍Identity的部分,奈何自己挖坑太深,高举高打的方法不行.只能自己默默下载了Katana的源代码研究了好一段时间.发现要想能够理解好用好Identity, Claims是一个绕 ...

  5. 全新的membership框架Asp.net Identity——绕不过的Claims

    http://www.cnblogs.com/JustRun1983/p/4708176.html?utm_source=tuicool&utm_medium=referral

  6. Asp.Net Identity 深度解析 之 注册登录的扩展

    关于权限每个系统都有自己的解决方案,今天我们来讨论一下微软的权限框架Asp.Net Identity ,介绍如下  http://www.asp.net/identity 这里不在赘余. 很多人认为 ...

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

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

  8. 初识Asp.net Identity

    第一篇,多多指教啦! 之前做asp.net的网站只知道Asp.net的身份验证方式有:Windows验证和Forms验证.今天初步了解了下asp.net的Identity技术,顺带了解了它之前的Mem ...

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

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

随机推荐

  1. 一个ajax的Post要求

    <1> $.post(url,[data],[callback],[type]) 第一个参数是地址,第二个参数是一个参数传递.第三个参数是一个回调函数.參数是请求返回数据的类型 //一个a ...

  2. 模式识别 - libsvm该函数的调用方法 详细说明

    libsvm该函数的调用方法 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM ...

  3. HDU 4283 You are the one(间隔DP)

    标题效果: The TV shows such as You Are the One has been very popular. In order to meet the need of boys ...

  4. How to install IIS 7.5 on Windows 7 using the Command Line

    原文 How to install IIS 7.5 on Windows 7 using the Command Line On Windows Vista, to install IIS 7.0 f ...

  5. 新秀系列C/C++经典问题(四)

    一个主题:查找最小的k个元素 输入n个整数.输出当中最小的k个. . 分析:这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前面的k个数就是最小的k个数. 仅仅是这样的思路的时间复杂度为O(n ...

  6. 采用Duplicate target database在线恢复秩序oracle datagard图书馆设备

    线上oracle datagard备库由于断电以及误删除从库的归档日志文件,所以导致,备库主库数据不一致,备库须要紧急恢复.以下是大概恢复过程 1,从主库上面备份控制文件[oracle@localho ...

  7. Jquery Jqprint—随着Jquery Jqprint实现网页打印

    研究关于利用空闲时间今天Jquery Jqprint插入,用这个Jquery脚本就可以实现轻松打印指定的页面内容功能区: 样品A: <!DOCTYPE html PUBLIC "-// ...

  8. 取一种类型里面的产品销售前3甲的数据Sql

    需求:取出每种分类里面的销售前3甲的产品信息 表设计如下图: 数据如下: 两种方法可以实现: 1. SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION ...

  9. Java设计模式偷跑系列(21)建模和实现享受metapatterns

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40021651 享元模式(Flyweight):运用共享的技术有效地支持大量细粒度的对象. ...

  10. [CLR via C#]1.5 本地代码生成器:NGen.exe

    原文:[CLR via C#]1.5 本地代码生成器:NGen.exe 1. NGen.exe工具,可以在一个程序安装到用户计算机时,将IL代码编译成为本地代码.由于代码在安装时已经编译好,所以CLR ...