In ASP.NET Identity 2 or 3
ist es möglich, Benutzerinformationen auf Klassenebene zu erhalten? Szenario ist wie folgt: Es gibt nur zwei Rollen in der App, nämlich AdminRole
und RegRole
. Ein Benutzer in einer AdminRole kann in UserRole als Benutzer fungieren, indem er einen Benutzernamen aus einer Dropdown-Liste auswählt, die nur für den Benutzer "AdminRole" verfügbar ist. Was ich tun muss, ist, dass, wenn ein Admin einen Benutzer aus dem Dropdown von Homepage auswählt, ich den Namen des ausgewählten Benutzers einer Variablen der Klasse (das ist ein Controller) zuweisen muss, damit der Benutzername für alle verwendet werden kann Aktionsmethoden dieses Controllers (eine Klasse). Ich habe versucht, die folgenden, aber es wirft NullException bei if (User.Identity.Name == "Admin")
Linie des Codes unter:Abrufen von Benutzerinformationen auf Klassenebene in ASP.NET Identity
NullReferenceException: Object reference not set to an instance of an object.
Home Controller [Wo Admin einen Benutzernamen aus einer Dropdown wählt]
public class HomeController : Controller
{
...
[HttpPost]
public IActionResult ChooseUser(string selectedUser)
{
HttpContext.Session.SetString(SessionKeySelUser, selectedUser);
return View();
}
}
Andere Controller- [ Wo ich den ausgewählten Benutzernamen von oben in allen Aktionsmethoden des folgenden Controllers verwenden möchte:
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();
}
....
Ich nehme an 'Aufgabe' du meintest 'Aufgabe '. Wie auch immer, in Zeile 'GetCurrentUserAsync.Name ==" Admin "' bekomme ich Fehler: ** Task 'enthält keine Definition für Name **. –
nam
Sie haben Recht. Ich habe gerade die Antwort aktualisiert. Ich benutze einen benutzerdefinierten Benutzer, deshalb habe ich die Klasse AppUser genannt. Der Standardwert ist ApplicationUser. –
Ja, aber der gleiche Fehler bleibt bestehen. – nam