簡體   English   中英

如何從非控制器類中的Microsoft.AspNetCore.Identity獲取UserID

[英]How to get UserID from Microsoft.AspNetCore.Identity in a non controller class

希望有人可以在這里幫助我。 我是ASP,MVC和C#的新手,但是試圖構建一個Web應用程序來學習它。 我創建了默認應用程序,該應用程序為用戶創建了所有控制器,視圖等,並且一切正常。

現在,我已經創建了一個類,並且在該類中,我需要獲取登錄用戶的用戶ID或用戶名。 我嘗試將UserManager和SignInManager注入到類的構造函數中,但是隨后任何調用該調用的控制器都抱怨我沒有傳遞所需的參數。

這可能很厚臉皮,但如果有人有一個基本的示例,說明如何從類內部檢索諸如userID之類的內容,那么我可能可以向后工作並了解正在發生的事情。 一直在搜索在線時間,但找不到任何有效的示例。

使用VS 2015 Asp Core Net RC2

謝謝

用戶ID存在於HttpContext 身份只是添加了助手,但是您仍然需要HttpContext實例,該實例不會在控制器外部。 這似乎是XY問題的一個很好的例子,您在問如何決定以某種方式解決問題,而不是詢問如何解決問題本身。 一般而言,如果您需要控制器外部的用戶ID,則只需將文字用戶ID從控制器傳遞到您要調用的對象,而不是嘗試從那里檢索它。

這對我有用

檢查系統內服務這個文章,來看看如何獲得HttpContextAccessor的實例(例如_httpContextAccessor)

然后,您可能會像這樣獲得用戶標識:

long userId = ClaimsPrincipalExtensions.GetUserId(_httpContextAccessor.HttpContext.User);

假設您已經編寫了ClaimsPrincipalExtensions.GetUserId方法,如果沒有,只需檢查this即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM