asp.Netidentity 2.2.0でのロールの有効化と基本的な使用(3)
16292 ワード
コントローラの作成
第一歩:controllersフォルダ上で右ボタンをクリックしてコントローラを追加します.ここで選択したのは「MVC 5コントローラ-空」で、名前は「RolesAdministratinController」に設定されています.cs
ステップ2:ネームスペースの追加
手順3:コントローラのスペース名の下で権限を追加します(第1回でオプション操作を選択した場合、ここで直接権限を追加できます.そうしないと、変更するか、記入しないでください).
[Authorize(Roles = "Admin")]
ステップ4:public class RolesAdminController:Controllerに次のコードを追加します.
ステップ5:ActionResult Index()を変更してから
ステップ6:非同期表示ロールの詳細の追加
ステップ7:作成ロールの追加
ステップ8:ロールの編集
ステップ9:ロールの削除
これで、キャラクタコントローラは完了します.
第一歩:controllersフォルダ上で右ボタンをクリックしてコントローラを追加します.ここで選択したのは「MVC 5コントローラ-空」で、名前は「RolesAdministratinController」に設定されています.cs
ステップ2:ネームスペースの追加
using System.Net;
using System.Threading.Tasks;
using xxxx.Models;//
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.AspNet.Identity.EntityFramework;
手順3:コントローラのスペース名の下で権限を追加します(第1回でオプション操作を選択した場合、ここで直接権限を追加できます.そうしないと、変更するか、記入しないでください).
[Authorize(Roles = "Admin")]
ステップ4: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;
}
}
ステップ5:ActionResult Index()を変更してから
public ActionResult Index()
{
return View(RoleManager.Roles);//
}
ステップ6:非同期表示ロールの詳細の追加
//
// 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);
}
ステップ7:作成ロールの追加
//
//
// 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();
}
ステップ8:ロールの編集
//
//
// 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();
}
ステップ9:ロールの削除
//
//
// 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();
}
これで、キャラクタコントローラは完了します.