Ich entwickle derzeit eine API mit ASP.NET in C#.Best Practice: Benutzeridentitäten als Parameter?
Ein Endpunkt muss einen anderen aufrufen, um einen Wert zurückzugeben.
public class Testcontroller : BaseApiController
{
[Authorize]
[HttpGet]
[Route("1", Name = "F1")]
public async Task<IHttpActionResult> F1()
{
return await F2(); // calls 2nd method
}
[Authorize]
[HttpGet]
[Route("2", Name = "F2")]
public async Task<IHttpActionResult> F2()
{
int I = 2;
return Ok(I.ToString());
}
}
Ok, der zurückgegebene Wert dieser ganzen Sache wird 2 sein, was absolut in Ordnung ist. In der echten API müssen die zweiten Methoden jedoch einige Daten über den Benutzer abrufen. Das wird in der Regel behandelt mit
var Name = ClaimsPrincipal.Current.Identity.Name;
var CurrentUser = await this.AppUserManager.FindByNameAsync(Name);
Diese zwei Linien, die die Benutzerinformationen durch die Inhaber-Token erhalten, das heißt auf das Verfahren durch den Autorisierungsvorgang übergeben.
In Anbetracht dessen könnte die erste Funktion die andere aufrufen. Der Nachteil ist, dass diese beiden LOCs für die Benutzerdaten nicht funktionieren, weil dieses Token nicht ordnungsgemäß übergeben wird.
Wie würden Sie vorschlagen, dieses Problem zu umgehen? Ich überlegte, ob ich einen optionalen Parameter hinzufügen und den CurrentUser durchreichen könnte. Aber ich dachte, das könnte zu Sicherheitsproblemen führen.
Danke für Ihre Hilfe!
Okay, danke, dann werde ich versuchen, es als zusätzlichen Parameter zu implementieren. Ich habe die User-Eigenschaft ausprobiert, konnte aber keine Möglichkeit finden, die eigentliche userId zu erhalten, mit der sich der Benutzer in der DB befindet. Wie würdest du das machen? –
https://stackoverflow.com/questions/22624470/get-current-user-id-in-asp-net-identity-2-0 Adressen, dass :) – blowdart
Großartig, danke für die Hilfe mich da draußen :) –