在ASP.NET Identity 2 or 3
中,是否可以獲取類級別的用戶信息?情景如下:應用中只有兩個角色,即AdminRole
和RegRole
。 AdminRole中的用戶可以充當UserRole中的用戶,只需從AdminRole用戶可用的下拉列表中選擇一個用戶名即可。我需要做的是,如果管理員從主頁的下拉列表中選擇一個用戶,我需要將所選用戶的名稱分配給一個類(即Controller)級變量,以便用戶名可以用於所有用戶該控制器的操作方法(一個類)。我嘗試以下,但它在if (User.Identity.Name == "Admin")
線以下的代碼拋出NullException:在ASP.NET標識中獲取類級別的用戶信息
NullReferenceException: Object reference not set to an instance of an object.
家庭控制器 [如果管理員從下拉菜單中選擇一個用戶名]
public class HomeController : Controller
{
...
[HttpPost]
public IActionResult ChooseUser(string selectedUser)
{
HttpContext.Session.SetString(SessionKeySelUser, selectedUser);
return View();
}
}
其他控制器 [我想在以下控制器的所有操作方法中使用選定的用戶名稱]
public class TestController : Controller
{
private MyProjContext _context;
private string _userName;
public TestController (MyProjContext context)
{
_context = context;
if (User.Identity.Name == "Admin")
_userName = HttpContext.Session.GetString("selectedUser"); //This session variable was assigned the user name value when the admin had selected the user name from the dropdown on the home page
}
}
//use the class level variable _userName in all action methods like the one below
public IActionResult TestAction()
{
_context.Orders.Where(ord => ord.Seller == _userName);
return View();
}
....
我認爲'Task'的意思是'Task '。無論如何,在線'GetCurrentUserAsync.Name ==「管理員」我收到錯誤:**任務'不包含名稱**的定義。 –
nam
你說得對。我剛剛更新了答案。我使用自定義用戶,這就是爲什麼我命名類AppUser。默認值是ApplicationUser。 –
是的,但同樣的錯誤依然存在。 – nam