我有一個 REST API 服務,它需要驗證任何型別的用戶(例如 Windows 用戶)并將對其的參考添加到資料庫表中以供以后使用。
為此,我需要知道 Entity Framework Core 中的當前用戶,因為用戶存盤為物體的創建者。
我試圖SaveChanges從DbContext創建物體時用戶被耦合的位置抽象出方法中當前用戶的耦合。
但是如何在DbContext. 我正在嘗試使用委托,但我陷入了 DI 需要注冊UserService抽象用戶并回傳 ID 的方式上。
uj5u.com熱心網友回復:
我認為我們可能需要更多細節,但至少如果您在 .net web api controllerbase 背景關系中,您有什么
System.Security.Principal.IIdentity user = User?.Identity;
if (user != null && user.IsAuthenticated)
System.Diagnostics.Debug.WriteLine($"Username: {user.Name}");
從這個意義上說,這很大程度上取決于將哪些宣告放在您會發現什么的位置,如果您使用完全不同的身份驗證方案,事情可能會有所不同:)
uj5u.com熱心網友回復:
如果我有一個物件
public myObj
{
public int myObjID {get; set;}
public string ObjectDetails {get; set;}
# I would add this field
public string UserName {get; set;}
}
然后在我將存盤物件的控制器操作中,我將執行以下操作:
myObj.UserName = User.Identity?.Name ?? "";
如果[Authorize]已應用于控制器,則空檢查尤其多余,因為您無法在未經授權的情況下進行操作,并且應用程式要求您擁有用戶名(至少)。
如果您需要找出誰做了什么:
var obj = await db.myObj.where(x=> x.UserName == User.Identity.Name).ToListAsync()
或者
var obj = await db.myObj.where(x=> x.UserName == uname).ToListAsync();
哪里uname是方法引數等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/383687.html
