asp.net identity 2.2.0 中角色启用和基本使用(三)
创建控制器
第一步:在controllers文件夹上点右键》添加》控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs
第二步:添加命名空间
using System.Net; using System.Threading.Tasks; using xxxx.Models;//你项目的名称 using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; using Microsoft.AspNet.Identity.EntityFramework;
第三步:在控制器的空间命名下添加权限(如果在第一讲中你选择了可选操作这里可以直接添加权限,否则要么改,要么先别填。)
[Authorize(Roles = "Admin")]
第四步:在public class RolesAdminController : Controller内添加如下代码
public RolesAdminController() { } public RolesAdminController(ApplicationUserManager userManager, ApplicationRoleManager roleManager) { UserManager = userManager; RoleManager = roleManager; } private ApplicationUserManager _userManager; public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } set { _userManager = value; } } private ApplicationRoleManager _roleManager; public ApplicationRoleManager RoleManager { get { return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>(); } private set { _roleManager = value; } }
第五步:修改ActionResult Index()
修改后为
public ActionResult Index() { return View(RoleManager.Roles);//显示角色清单 }
第六步:添加异步显示角色详情
//异步读取角色详情 // GET: /Roles/Details/5 public async Task<ActionResult> Details(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var role = await RoleManager.FindByIdAsync(id); // 读取角色内的用户列表。 var users = new List<ApplicationUser>(); foreach (var user in UserManager.Users.ToList()) { if (await UserManager.IsInRoleAsync(user.Id, role.Name)) { users.Add(user); } } ViewBag.Users = users; ViewBag.UserCount = users.Count(); return View(role); }
第七步:添加创建角色
// //读取角色创建 // GET: /Roles/Create public ActionResult Create() { return View(); } //异步写入角色创建 // POST: /Roles/Create [HttpPost] public async Task<ActionResult> Create(RoleViewModel roleViewModel) { if (ModelState.IsValid) { var role = new IdentityRole(roleViewModel.Name); var roleresult = await RoleManager.CreateAsync(role); if (!roleresult.Succeeded) { ModelState.AddModelError("", roleresult.Errors.First()); return View(); } return RedirectToAction("Index"); } return View(); }
第八步:编辑角色
// //异步读取角色编辑 // GET: /Roles/Edit/Admin public async Task<ActionResult> Edit(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var role = await RoleManager.FindByIdAsync(id); if (role == null) { return HttpNotFound(); } RoleViewModel roleModel = new RoleViewModel { Id = role.Id, Name = role.Name }; return View(roleModel); } //异步写入角色编辑 // POST: /Roles/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Edit([Bind(Include = "Name,Id")] RoleViewModel roleModel) { if (ModelState.IsValid) { var role = await RoleManager.FindByIdAsync(roleModel.Id); role.Name = roleModel.Name; await RoleManager.UpdateAsync(role); return RedirectToAction("Index"); } return View(); }
第九步:删除角色
// //异步读取角色删除 // GET: /Roles/Delete/5 public async Task<ActionResult> Delete(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var role = await RoleManager.FindByIdAsync(id); if (role == null) { return HttpNotFound(); } return View(role); } //异步写入角色删除 // POST: /Roles/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public async Task<ActionResult> DeleteConfirmed(string id, string deleteUser) { if (ModelState.IsValid) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var role = await RoleManager.FindByIdAsync(id); if (role == null) { return HttpNotFound(); } IdentityResult result; if (deleteUser != null) { result = await RoleManager.DeleteAsync(role); } else { result = await RoleManager.DeleteAsync(role); } if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.First()); return View(); } return RedirectToAction("Index"); } return View(); }
至此,角色控制器就完成了。
asp.net identity 2.2.0 中角色启用和基本使用(三)的更多相关文章
- asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...
- 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 中角色启用和基本使用(五)
建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...
- asp.net identity 2.2.0 中角色启用和基本使用(二)
建立模型 第一步:在Models文件夹上点右键 >添加>类 类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 ...
- ASP.NET Identity 身份验证和基于角色的授权
ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在 ...
- 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 ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)
有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...
随机推荐
- JSONP跨域的原理解析( 一种脚本注入行为)
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制, 被称为“some-Origin Policy”(同源策略).这一策略对于Jav ...
- 使用echarts
<html> <head> <script type="text/javascript" src='echarts.min.js'></s ...
- 哈哈,修改PHP5.4.44语法成功
作为一个脚本语言,面向对象的继承基本上不想用到,强类型比较也想使用==直接比较.作为专业程序员不想让PHP解释器代劳过多. 修改了这个MOD版本,效果杠杠的.
- Sanarus公司的Cassi微创乳房活检设备投入使用
这种新型可转动的大核心乳房活检设备,是一种全自动一次性的手工操作的设备.该设备对乳房造成的创伤最小,是传统乳房活检设备很好的替代选择. 该设备被称作Cassi,操作方便而且无需准备时间.无需固定设备的 ...
- web测试
1.验证码在不同浏览器兼容性(兼容测试) 2.登录时间cookie及session
- 创建nim+安装vioc分区
一.搭建nim服务器 1.安装须知 安装nim软件包,client随系统默认安装,这里需要安装的是bos.sysmgt.nim.master和bos.sysmgt.nim.spot,即bos.sysm ...
- cassandra安装
从官网下载下来的包解压后有100多M,里面包含了已经编译好的全部程序. 按照方法,进入目录后运行 bin/cassandra -f 运行不成功. 然后根据"https://wiki.apac ...
- setAutoCommmit保持数据的完整性
setAutoCommit总的来说就是保持数据的完整性,一个系统的更新操作可能要涉及多张表,需多个SQL语句进行操作 循环里连续的进行插入操作,如果你在开始时设置了:conn.setAutoCommi ...
- 用户行为数据采集核心思维(APP、web数据采集/埋点)
关于数据采集(也就是所谓的埋点),有很多中形式,或者说方法.所有的数据采集都时围绕一个核心的三个点来做区别的处理. 数据采集核心思维三个点: 1.对象: 要采集谁,一个页面.一个按钮,页面或者按钮,就 ...
- 编写shell脚本遇到的问题
运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...