В ASP.NET Identity 2 or 3
можно ли получить информацию о пользователе на уровне класса? Сценарий следующий: в приложении всего две роли, а именно AdminRole
и RegRole
. Пользователь в AdminRole может действовать как пользователь в UserRole, выбрав имя пользователя из раскрывающегося списка, доступного только пользователю AdminRole. Что мне нужно сделать, так это то, что если администратор выбирает пользователя из раскрывающегося списка с домашней страницы, мне нужно назначить имя выбранного пользователя переменной уровня класса (то есть контроллера), чтобы имя пользователя можно было использовать на всех методы действия этого Контроллера (класса). Я пробовал следующее, но он выдает исключение NullException в if (User.Identity.Name == "Admin")
строке приведенного ниже кода:
NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
Домашний контроллер [где администратор выбирает имя пользователя из раскрывающегося списка]
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();
}
....