冯 海

一个程序新人菜鸟的日记,希望大家多多关照。QQ:32316131

2018教程之mvc+ef之五:Identity角色管理之为角色添加用户

 这个不是一对一哟,是一对N,

即一个用户可以属于多个角色。比如又是普通 用户,又是Super等

 一、先建立显增用户的列表的功能

1.后台

/// <summary>
		/// 用户到角色列表
		/// </summary>
		/// <param name="id"></param>
		/// <returns></returns>
		[HttpGet]
		//[Authorize(Roles = "Super")]
		public ActionResult UserToRole(string id)
		{
			if (string.IsNullOrWhiteSpace(id))
			{
				return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
			}
			var role = RoleManager.FindById(id);
			ViewBag.RoleName = role.Name;
			ViewBag.RoleId = id;
			if (role == null)
			{
				return HttpNotFound();
			}
			var memberIDs = role.Users.Select(x => x.UserId).ToArray();
			var members = UserManager.Users.Where(x => memberIDs.Any(y => y == x.Id));
			var membersNo = UserManager.Users.Except(members);
			return View(membersNo);
		}

  

二、前台
@model IEnumerable<MYtest2018.Models.ApplicationUser>

@{
    ViewBag.Title = "UserToRole";
    Layout = "~/Views/Shared/_Layoutadmin.cshtml";
}


<div class="row wrapper border-bottom white-bg page-heading">
	<div class="col-sm-4">
		<h2>增加用户到角色<strong class="text-navy"> @ViewBag.RoleName </strong></h2>

	</div>
	<div class="col-sm-8">
		<div class="title-action">
			<a class="btn btn-primary btn-sm" href="/Account/ListRoles">返回</a>
		</div>
	</div>
</div>


<div class="wrapper wrapper-content animated fadeInRight">
	<div class="row">

		<div class="col-lg-12">
			 
				<div class="ibox-content">

					<table class="table table-hover">
						<thead>
							<tr>
								<th>用户名</th>
								<th>真名</th>
								<th>联系电话</th>
								<th> </th>
							</tr>
						</thead>
						<tbody>
							@foreach (var user in Model)
			{
								<tr>
									<td>@Html.DisplayFor(m => user.UserName)</td>

									<td>@Html.DisplayFor(m => user.RealName)</td>
									<td>@Html.DisplayFor(m => user.PhoneNumber)</td>
									<td>

<a class="btn btn-primary" href="~/Account/AddToRole?userId=@user.Id&&roleId=@ViewBag.RoleId&&roleName=@ViewBag.RoleName" onclick="return confirm('你确认添加吗?')"><i class="fa fa-child"></i> 添加到角色 </a>

			</td>
								</tr>
			}
						</tbody>
					</table>
				</div>
			</div>
		</div>
 </div>



 

  

三,效果

 

 

 

 增加一个操作,点一下,添加到角色就添加进去了

后台

	/// <summary>
		/// 添加用户到角色
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="roleName"></param>
		/// <param name="roleId"></param>
		/// <returns></returns>
		//[Authorize(Roles = "Super")]
		public ActionResult AddToRole(string userId, string roleName, string roleId)
		{
			if (!string.IsNullOrWhiteSpace(userId) && !string.IsNullOrWhiteSpace(roleName))
			{
				UserManager.AddToRole(userId, roleName);
			}
			return RedirectToAction("UserToRole/"+roleId );
		}

  

 点一下就进去了。

三、查看某角色下有哪些用户列表
/// <summary>
		/// 查看角色中的用户
		/// </summary>
		/// <param name="id"></param>
		/// <returns></returns>
		/// 
		[Authorize(Roles = "Super")]
		public ActionResult ViewRoleUser(string id)
		{
			if (string.IsNullOrWhiteSpace(id))
			{
				return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
			}
			var role = RoleManager.FindById(id);
			ViewBag.RoleName = role.Name;
			var memberIDs = role.Users.Select(x => x.UserId).ToArray();
			var members = UserManager.Users.Where(x => memberIDs.Any(y => y == x.Id));
			return View(members);
		}

  

 四,视图 
@model IEnumerable<MYtest2018.Models.ApplicationUser>
@{
    ViewBag.Title = "ViewRoleUser";
    Layout = "~/Views/Shared/_Layoutadmin.cshtml";
}


<div class="row wrapper border-bottom white-bg page-heading">
	<div class="col-sm-4">
		<h2>角色 <strong class="text-navy"> @ViewBag.RoleName </strong> 的用户列表</h2>

	</div>
	<div class="col-sm-8">
		<div class="title-action">
			<a class="btn btn-primary btn-sm" href="/Account/ListRoles">返回</a>
		</div>
	</div>
</div>

<div class="wrapper wrapper-content animated fadeInRight">
	<div class="row">

		<div class="col-lg-12">

			<div class="ibox-content">

				<table class="table table-hover">
					<thead>
						<tr>
							<th>用户名</th>
							<th>真名</th>
							<th>联系电话</th>
							<th> </th>
						</tr>
					</thead>
					<tbody>

						@foreach (var user in Model)
			{
							<tr>
								<td>@Html.DisplayFor(m => user.UserName)</td>

								<td>@Html.DisplayFor(m => user.RealName)</td>
								<td>@Html.DisplayFor(m => user.PhoneNumber)</td>
								<td>
									<a class="btn btn-warning" href="~/Account/RemoveRoleUser?userId=@user.Id&&roleName=@ViewBag.RoleName" onclick="return confirm('你确认添加吗?')"><i class="fa fa-child"></i> 移除用户 </a>
@Html.ActionLink("移除用户", "RemoveRoleUser", new { roleName = ViewBag.RoleName, userId = user.Id }, new { @class = "btn btn-warning" })

								</td>
							</tr>
			}
					</tbody>
				</table>
			</div>
		</div>
	</div>
</div>

  

 

 

 五、移除用户的代码
[HttpGet]
		//[Authorize(Roles = "Super")]
		public ActionResult RemoveRoleUser(string roleName, string userId)
		{
			if (string.IsNullOrWhiteSpace(roleName) && string.IsNullOrWhiteSpace(userId))
			{
				return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
			}
			var result = UserManager.RemoveFromRole(userId, roleName);
			var role = RoleManager.FindByName(roleName);
			if (!result.Succeeded)
			{
				return View("Error");
			}
			return RedirectToAction("ViewRoleUser", new { id = role.Id });
		}

  

 

posted @ 2018-08-31 00:40  秋天来了哟  阅读(580)  评论(0)    收藏  举报
认识就是缘份,愿天下人都快乐!
QQ: 32316131
Email: 32316131@qq.com