Ich bin mit ASP.NET Web API. Und ich mag die Fähigkeit, Attribute hinzufügen Ebenen der Zugriff auf die API-Controller wie folgt zu spezifizieren:Wie ASP.NET Web API 403 oder 401 entsprechend reagieren lassen?
[Authorize]
public IEnumerable<Activity> Get()
So weit so gut, aber wenn ich Rollen verwenden das Konzept bricht auseinander.
[Authorize(Roles = "Manager")]
public IEnumerable<Activity> Get()
Mein Benutzer eine Weile an dem System angemeldet zurück haben kann und dann irgendwann schlugen sie eine Ressource, die „verboten“ zu ihnen. Es hat keinen Sinn, wenn der Benutzer versucht, sich erneut anzumelden. Da ihr rechtmäßiger Account keinen Zugriff auf diese URL hat. Aber im Moment bekommen sie 401 (nicht autorisiert) anstelle von 403 (verboten), als hätten sie sich mit dem falschen Account eingeloggt. Der Benutzer hat jedoch nur einen Account und es ist nicht beabsichtigt, dass Nutzer nach einem Account fragen, der jemand anderem gehört.
Hat jemand mit diesem Problem umgegangen? Kann jemand das beheben? Ich bin mehr als willens, den Code zu schreiben, um das zu beheben, aber ich weiß momentan nicht, wo ich anfangen soll.
Ändern der AuthorizeAttribue war die Antwort. In diesem speziellen Beispiel wird System.Web.Mvc anstelle von System.Web.Http geändert, da ich die WebAPI verwende. –
Ich dachte, Sie möchten ein benutzerdefiniertes Attribut erstellen, um die HTTP-Statuscodes zurückzusenden, die Ihnen gefallen –
Und das ist, was ich getan habe, ich geerbt von System.Web.Http.AuthorizeAtribute. Nicht von System.Web.Mvc.AuthorizeAtribute, auf das sich der Artikel bezieht, auf den Sie verwiesen haben. –