Ich versuche, einen Link zu verbergen oder nicht auf die Seite zu gehen, wenn der Benutzer kein Administrator ist. Ich bin in der Lage, die letztere mit diesem Code in meinem Controller zu tun:ViewContext.HttpContext.User.IsInRole ("Admin") funktioniert nicht
[AuthorizeRoles("Admin")]
public ActionResult Registration()
{
return View();
}
Wenn ich versuche, den Link mit diesem Code zu verstecken:
@if (!Context.User.Identity.Name.IsEmpty())
{
<li id="dd_vehicle" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">VEHICLE <b class="caret"></b></a>
<ul class="dropdown-menu">
@if (ViewContext.HttpContext.User.IsInRole("Admin"))
{
<li id="item_registration">
@Html.ActionLink("Registration", "Registration", "Home")
</li>
}
}
Der Link versteckt wird. Aber wenn ich mich als "Admin" anmelde, wird der Link immer noch nicht angezeigt.
Dies ist, wie ich AuthorizeAttribute:
public class AuthorizeRolesAttribute : AuthorizeAttribute
{
private readonly string[] userAssignedRoles;
public AuthorizeRolesAttribute(params string[] roles)
{
this.userAssignedRoles = roles;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool authorize = false;
using (var db = new SMBI_DBEntities())
{
var um = new UserManager();
foreach (var roles in userAssignedRoles)
{
authorize = um.IsUserInRole(httpContext.User.Identity.Name, roles);
if (authorize)
return authorize;
}
}
return authorize;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("~/Home/UnAuthorized");
}
}
und dies ist in Loginview:
[HttpPost]
public ActionResult Login(UserLoginView ulv, string returnUrl)
{
if (ModelState.IsValid)
{
var um = new UserManager();
var password = um.GetUserPassword(ulv.LoginName);
if (string.IsNullOrEmpty(password))
{
ModelState.AddModelError("", "Login ID and Pasword do not match.");
}
else
{
if (ulv.Password.Equals(password))
{
FormsAuthentication.SetAuthCookie(ulv.LoginName, false);
return RedirectToAction("Registration", "Home");
}
else
{
ModelState.AddModelError("","Password provided is incorrect.");
}
}
}
return View(ulv);
}
Hoffnung, die Sie helfen könnten. Vielen Dank.
Die AuthorizeAttribute nicht für die Sichtseite arbeiten; In dieser Hinsicht wird es etwas komplizierter ... Es gibt einige gute Online-Ressourcen, die dabei helfen können. –