2016-07-15 14 views
2

beschränken Ich mache einen WebAPI-Dienst. Ich habe gerade die ASP.NET-WebAPI-Vorlage mit Authentifizierung verwendet. Ich frage mich, wie können wir DB Entity Zugriff für die Benutzer beschränken, die bereits angemeldet sind. Mit [Autorisieren] können wir nicht autorisierte Benutzer, die ich getan habe, zu beschränken. Nach dem Login können sie sofort auf alles zugreifen. ZB: Ich habe einen Tisch Bill. Mit BillId können autorisierte Benutzer auf jeden Eintrag in der Bill-Tabelle zugreifen. Wie kann ich das einschränken? Derzeit hat die Bill-Tabelle keine Beziehung zu UserIdentity-Tabellen !!.Wie Sie den Zugriff auf DB-Ressourcen in WebAPI

+0

Nun, es scheint, als ob Sie bereits wissen, was zu tun ist. Sie müssen einen Mechanismus für "Berechtigungen" oder "Rollen" erstellen, wenn Sie meinen. Jeder authentifizierte Benutzer sollte eine Rolle haben und jedes Mal, wenn ein Benutzer auf etwas zugreifen möchte, sollten Sie sich mit seinen Berechtigungen auseinandersetzen. – jpgrassi

+0

Wie @jpgrassi sagt, möchten Sie wahrscheinlich rollenbasierten Zugriff. Sobald Benutzer in Rollen sind, können Sie das authorize Attribut wie '[Authorize (Roles =" whatever ")]' – Crowcoder

+0

Wenn es 2 Benutzer mit derselben Rolle gibt, können beide auf Daten zugreifen, die zu dem anderen Benutzer gehören, da sie die gleiche Rolle haben . Wie können wir das einschränken? –

Antwort

0

Nachdem ich über das Szenario nachgedacht habe, habe ich eine Lösung [nicht sicher das Beste]. In allen meinen Controllern kann ich die Userid [Authentifizierte Benutzer-ID] erhalten. Wenn ein Benutzer Daten zu einer Entität hinzufügt, werde ich dieser Entität Benutzer-ID als Spalte hinzufügen und Benutzer-ID speichern. Wenn ein Benutzer nach einer Ressource sucht, erhält er nur die Ressourcen seiner Benutzer-ID. Ich gebe keine Beziehung zu einer Benutzertabelle, sondern füge die Benutzer-ID allen Entitäten als neue Spalte hinzu.