asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置
关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一切东西。
一、常用的就是密码强度问题:
// 配置密码的验证逻辑
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6, //设置密码长度最小为6
RequireNonLetterOrDigit = true, //设置密码是否需要一个非字母或数字字符。
RequireDigit = true, //设置密码是否需要一个数字(0”-“9”)。
RequireLowercase = true, //设置密码是否需要一个小写字母(A - Z)。
RequireUppercase = true, //设置密码是否需要一个大写字母(A - Z)。
};
二、注册时信箱转为用户名。
这里需要更改控制器,模型和视图
打开Controller目录下的AccountController.cs找到 public async Task<ActionResult> Register(RegisterViewModel model)这下面的var user = new ApplicationUser { UserName = model.Email, Email = model.Email };这里两个参数都是绑定的email。
1.把var user = new ApplicationUser { UserName = model.Email, Email = model.Email };改为var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
更改后vs会提示下红波浪线(错误),选择纠错为“生成属性”的哪一项。
2.vs将在Models文件夹下找AccountViewModels模型内的RegisterViewModel中的public class RegisterViewModel 中自动添加 public string UserName { get; set; },好了在上面堆你想要的规则吧。
例如:[Required]
[StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)]
[Display(Name = "用户账号")]
[DataType(DataType.Text)]
public string UserName { get; set; }
3.在Views文件夹中的register.cshtml文件中添加一组代码:
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
</div>
</div>
至此,这项修改就完成了,注册一个试试吧。
4、改完上面的,还要改下login的,因为改为了用户名注册,这里在用email登陆的话,一定出现错误。
首先在Models文件夹下找AccountViewModels模型内的loginViewModel中的public class loginViewModel 中自动添加 public string UesrName { get; set; },好了在上面堆你想要的规则吧。
例如:[Required]
[StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)]
[Display(Name = "用户账号")]
[DataType(DataType.Text)]
public string UserName { get; set; }
在这里设置好后,一定要把原来的email模型项去掉或者注释掉,否则你登陆不上去且还不给提示。
[Required]
[Display(Name = "电子邮件")]
[EmailAddress]
public string Email { get; set; }
5、之后在Views文件夹中的login.cshtml文件中原来为
<div class="form-group">
@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" })
</div>
</div>
改为
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
</div>
</div>
6、打开AccountController.cs文件,找到 public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)这个方法
把 var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
改为var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
这样以后登陆和注册都改为用户名形式了。
三、修改用户管理中角色分配时使用用户名称
按照之前的步骤当大家操作“用户管理”中的编辑角色时会发现这里显示的是“电邮地址”而不是用户名。现在我们来改良这个问题。
1.打开“Models”中的“AdminViewModels.cs”文件,找到 “ EditUserViewModel”方法。
注释掉跟“Email”相关的代码并添加“UserName”属性,效果如下: (这里说下,个人喜欢注释掉代码,因为方便使用后悔药。喜欢绝对简洁的朋友,可以直接删除。)
//[Required(AllowEmptyStrings = false)]
//[Display(Name = "电邮地址")]
//[EmailAddress]
//public string Email { get; set; }
[Required(AllowEmptyStrings = false)]
[Display(Name = "用户名称")]
public string UserName { get; set; }
2、修改“controllers”文件夹中的“UserAdminController.cs”中的
原为“public async Task<ActionResult> Edit([Bind(Include = "Email,Id")]EditUserViewModel editUser, params string[] selectedRole)”
改为“public async Task<ActionResult> Edit([Bind(Include = "UserName,Id")]EditUserViewModel editUser, params string[] selectedRole)”
并注释掉该方法中的user.UserName = editUser.Email; user.Email = editUser.Email;然后添加上user.UserName = editUser.UserName;效果如下:
//user.UserName = editUser.Email; //user.Email = editUser.Email; user.UserName = editUser.UserName;
3.打开“Views”文件夹中修改“UsersAdmin”文件夹中的“edit.cshtml”文件中的代码。效果如下:
@*<div class="form-group">
@Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" })
<div class=" col-md-10">
@Html.TextBoxFor(model => model.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Email)
</div>*@
<div class="form-group">
@Html.LabelFor(model => model.UserName, new { @class = "control-label col-md-2" })
<div class=" col-md-10">
@Html.TextBoxFor(model => model.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UserName)
</div>
</div>
至此,用户管理中的“编辑角色”显示的将是用户名了。
四、注册用户的同时将注册用户分配到默认角色中。
1、执行这步以前,需要准备好相关的角色。
2、打开“controllers”文件夹中的“accountcontroller.cs”找到“public async Task<ActionResult> Register(RegisterViewModel model)”方法,并在该方法内添加如下代码,完成后效果如下:
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
//将注册用户分配默认的角色
var rolesForUser = UserManager.GetRoles(user.Id);
if (!rolesForUser.Contains("普通用户"))
{
UserManager.AddToRole(user.Id, "普通用户");
}
// 有关如何启用帐户确认和密码重置的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=320771
// 发送包含此链接的电子邮件
// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
// await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href=\"" + callbackUrl + "\">這裏</a>来确认你的帐户");
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// 如果我们进行到这一步时某个地方出错,则重新显示表单
return View(model);
}
好了,注册个用户看看吧。
asp.net identity 2.2.0 中角色启用和基本使用(七)提示点的更多相关文章
- asp.net identity 2.2.0 中角色启用和基本使用(六)
创建用户管理相关视图 第一步:添加视图 打开UsersAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系 ...
- asp.net identity 2.2.0 中角色启用和基本使用(四)
创建角色相关视图 第一步:添加视图 打开RolesAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系统会 ...
- asp.net identity 2.2.0 中角色启用和基本使用(三)
创建控制器 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs 第二步:添加命 ...
- asp.net identity 2.2.0 中角色启用和基本使用(五)
建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...
- asp.net identity 2.2.0 中角色启用和基本使用(二)
建立模型 第一步:在Models文件夹上点右键 >添加>类 类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 ...
- ASP.NET Identity 身份验证和基于角色的授权
ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在 ...
- MyEclipse6.0中使用aptana插件,添加jquery提示功能
MyEclipse6.0中使用aptana插件,添加jquery提示功能 第一:查看当前MyEclipse集成的eclipse的版本,, 查看路径 D:/MyEclipse 6.0/eclips ...
- asp.net identity 2.2.0 在MVC下的角色启用和基本使用(一)
基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 ...
- ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...
随机推荐
- API
20145217 <Java程序设计>第八周学习总结 教材学习内容总结 本章主要讲输入与输出. 15.1日志API 1.java.util.logging包提供了日志功能相关类与接口,使用 ...
- three.js透视投影照相机
透视投影照相机(Perspective Camera)的构造函数是: THREE.PerspectiveCamera(fov, aspect, near, far) 让我们通过一张透视照相机投影的图来 ...
- NoSQL-Redis【1】-控制台配置密码
1.设置密码为123456 CONFIG SET requirepass 123456 2.验证密码 AUTH 123456 3.redis-cli连接 @ECHO OFF redis-cli.exe ...
- (转)Storm UI 解释
Storm UI link:http://lbxc.iteye.com/category/221265 本文主要解释下storm ui上各项属性的含义. 1. mainpage 首页主要分为3块: a ...
- Oracle存储过程中临时表的使用技巧
一.Oracle临时表知识 在Oracle中,临时表分为SESSION(会话级).TRANSACTION(事务级)两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSIO ...
- [深入浅出WP8.1(Runtime)]应用实例——移动截图
10.2应用实例——移动截图 移动截图例子是实现一个把一张图片的某个部分截取出来的功能,并且用户可以选定截取的图片区间.那个该例子会使用ManipulationDelta事件来实现对截取区间的选择.然 ...
- Codeforces Beta Round #35 (Div. 2) E. Parade(扫描线)
题目链接 只要会做,周长并,这题肯定有思路. 有个小地方敲错了,细心啊,扫描线,有一段时间没写过了,还有注意排序的问题,很重要. #include <iostream> #include ...
- 【Oracle】多次提交造成性能慢及处理方法
[问题背景] 2013-08-02 为某地市做了1个脚本用于帮客户账户添加一个新的账本.犯了一个很二的错,存储过程如下(SQL记录用户以后查询),一晚上只执行了190W数据 脚本如下 数据库中总共有5 ...
- MinGW
MinGW是windows版本的GCC和有用的GNU工具的集合 http://www.cnblogs.com/itech/archive/2010/04/08/1705592.html
- 数据库之SQL语法
-- 创建数据库CREATE DATABASE mytest; -- 创建表CREATE TABLE t_user( -- primary key 定义该列为主键列 -- AUTO_INCREMENT ...