I wie unter zwei Entitätsmengen haben:Wie erstellt man ein benutzerdefiniertes Attribut in ASP.NET MVC5?
public class Serial
{
[HiddenInput(DisplayValue=false)]
public int SerialID { get; set; }
[HiddenInput(DisplayValue=false)]
public string Id { get; set; }
[Required(ErrorMessage="Please provide your membership serial")]
[StringLength(16,ErrorMessage="This field can't be longer as of 16 characters.")]
public string UserSerial { get; set; }
}
UND
public class Subscription
{
[HiddenInput(DisplayValue=false)]
public int SubscriptionID { get; set; }
[Required(ErrorMessage="Please provide a subscription code.")]
public string AdminSerial { get; set; }
}
Ich möchte eine benutzerdefinierte Berechtigungs Attribut erstellen meine Aktionsmethoden in meinem Controller mit folgendem Szenario zu entwerfen:
Ich würde gerne überprüfen, ob der Wert
UserSerial
in Serial Entität ungleichAdminSerial
in Subscription Entity. Wenn die obige Bedingung wahr wird, so sollte dieActionResult
Methode selbst ausgeführt werden, sonst sollte die benutzerdefinierteAuthorizeAttribute
es zu einer anderen Aktionsmethode umleiten, hier ist was ich versuchte, aber es funktioniert nicht bin ich etwas fehlt?
public class RequireSerial : AuthorizeAttribute
{
EFDbContext db = new EFDbContext();
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!db.Subscriptions.Any(s => s.AdminSerial.Equals(db.Serials.Any())))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Serials", action = "Create" }));
}
else
{
// Execute the Action method itself
}
}
}
Ich habe versucht, diese RequireSerial
Brauch zu setzen Attribut auf der Oberseite der Aktionsmethoden genehmigen, aber nichts geschieht wirklich.
[RequireSerial]
public ViewResult Checkout()
{
return View();
}
Jede Hilfe wäre willkommen.
Was dann zu tun ?! –
Wenn Sie eine Klasse für die benutzerdefinierte Autorisierung erstellen, müssen Sie die IsAuthorized-Funktion überschreiben. –