у меня есть контроллер, который требуется Определенная роль имен «администратор»:информации для страницы, если requiment роли
это часть контроллера:
[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;
}
}
и определение ApplicationRoleManager
, которые наследуют от RoleManager
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
public ApplicationRoleManager(IRoleStore<IdentityRole,string> roleStore)
: base(roleStore)
{
}
public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
{
return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
}
}
Если у пользователя нет ролика Admin, то (я не знаю, как) переносятся на AccountController и метод: public ActionResult Login(string returnUrl)
Это определение:
[HttpGet]
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
теперь я хочу, чтобы подтолкнуть информацию к этому методу, если пользователь не является администратором и дать информацию «Эй! Вы не должны получить доступ к этому части страницы, пожалуйста, войдите в учетную запись администратора «то я расширил этот метод к этой форме:
public ActionResult Login(string returnUrl)
{
if (returnUrl != null &&
returnUrl.Contains("Admin") &&
Request.IsAuthenticated &&
!User.IsInRole("Admin"))
{
if (Request.IsAuthenticated)
ViewBag.Info = "Hey! You don't have acces to this part of page, please Login to Admin account";
else
TempData["Info"] = "Hey! You don't have acces to this part of page, please Login to Admin account";
return RedirectToAction("Index", "Home");
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
В моем пути, я знаю, что все контроллер, который имеет название» Admin ", fe RolesAdminController, требование UserAdminController Роли =" Admin ", но это не самый крутой способ:/
Это прекрасно работает, но это другой способ определить любую информацию, если пользователь (или гость) не имеет доступа к контроллеру?