Ich habe eine Controller-Methode Edit
aufgerufen, in der wir die Benutzerdaten bearbeiten können sie wie so geschaffen hatte ...ASP.NET MVC nur Attribut auf Benutzer bearbeiten ihren/seinen eigenen Inhalt
public ActionResult Edit(int id)
{
Submission submission = unit.SubmissionRepository.GetByID(id);
User user = unit.UserRepository.GetByUsername(User.Identity.Name);
//Make sure the submission belongs to the user
if (submission.UserID != user.UserID)
{
throw new SecurityException("Unauthorized access!");
}
//Carry out method
}
Diese Methode funktioniert gut, aber es ist ein wenig unordentlich in jede Controller-Edit-Methode zu setzen. Jede Tabelle hat immer eine UserID
, also habe ich mich gefragt, ob es eine einfachere Möglichkeit gibt, dies über ein [Authorize]
Attribut oder einen anderen Mechanismus zu automatisieren, um den Code sauberer zu machen.
Danke zu ermöglichen! Ich werde das generischer machen. Wie haben Vorlage haben eine Schnittstelle namens IUserOwnable, die eine UserID hat. Und dann übergeben Sie das Repository in das Attribut, wo es ein IUserOwnable holt und diese UserID des Benutzers mit der UserID des IUserOwnable verglichen –
Sicher, dies könnte so generisch wie Sie möchten, um Ihre spezifischen Anforderungen entsprechen. –
Netter Ansatz. Ich hüpfte, dass es jetzt ein eingebautes Attribut für das –