Ich versuche, eine benutzerdefinierte Autorisieren-Attribut zu erstellen, Folgendes zu tun:Erstellen einer benutzerdefinierten Autorisieren mit spezifischen Regeln Attribut
- Wenn der Benutzer eine Rolle „Regelmäßige Nutzer“ hat - er/Index umgeleitet wird/
- Alle anderen Benutzer (Administrator, Teilnehmer) wird zu/Search/Index
Dies ist der Zugang zu abonnieren, wenn der Benutzer die Such Controller zu öffnen versucht. Ich habe die Gewohnheit Autorisieren wie dieses Attribut:
public class DenyRegularUser : System.Web.Mvc.AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult("~/User/Logon");
return;
}
if (filterContext.HttpContext.User.IsInRole("Regular user"))
{
filterContext.Result = new RedirectResult("~/Index/Subscribe");
}
}
}
Und das ist meine Suche Controller:
namespace WebApplication2.Controllers
{
[DenyRegularUser(Roles ="Regular user")]
public class SearchController : Controller
{
// GET: Search
public ActionResult Index()
{
return View();
}
}
}
Aber aus irgendeinem Grunde, auch wenn ich ein Update der Rolle des Benutzers von normalen Benutzern Administrator oder Abonnenten, ich werde umgeleitet zur Login-Seite:/user/login ...
Dies sollte nicht passieren, da die Login-Funktionalität perfekt funktioniert und ich erhalte die Rolle des Benutzers ...
Was verpasse ich hier?
Sind die Benutzer "Admin"/"Subscriber", die Sie versuchen, auch ein Teil der Gruppe "Regular user"? – krillgar