Wie Sie 'übergeben Sie den parameter', um benutzerdefinierte AuthorizeAttribute
Möchte ich secure controller-Aktion, so dass nur Benutzer mit der Rolle "Admin" gelangen kann.
Ich glaube nicht, verwenden Sie die Rolle/Membership provider-alles ist "custom".
Ich habe diese so weit:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
return false;
string username = httpContext.User.Identity.Name;
UserRepository repo = new UserRepository();
return repo.IsUserInRole(username, "Admin");
}
}
Beachten Sie, dass ich hardcoded "Admin" hier.
Ich will, dass diese dynamisch sein.
Diese Arbeit nun:
[CustomAuthorize]
public ActionResult RestrictedArea()...
Aber ich möchte so etwas wie dies:
[CustomAuthorize(Roles = "Admin")]
public ActionResult RestrictedArea()
Du musst angemeldet sein, um einen Kommentar abzugeben.
AuthorizeAttribute
bereitsRoles
Eigenschaft, die für diesen Zweck verwendet werden:this.Roles
Wert alsnull
Roles
variable[CustomAuthorize(Roles="admin")]
?Roles
setter, die verlangen, dass provding benutzerdefinierteset
Methode, nicht die automatische, die wir hier haben) und versuchen, reporduce es in eine neue (minimal -) Projekt.