ASP.NET Identity 2 or 3
では、クラスレベルでユーザー情報を取得できますか?シナリオは次のとおりです。アプリには2つのロール(AdminRole
とRegRole
)しかありません。 AdminRoleのユーザーは、AdminRoleユーザーのみが使用できるドロップダウンからユーザー名を選択することにより、UserRoleのユーザーとして機能することができます。私がする必要があるのは、管理者がホームページからのドロップダウンからユーザーを選択した場合、選択したユーザーの名前をクラス(コントローラー)レベルの変数に割り当てて、ユーザー名をすべてそのコントローラー(クラス)のアクションメソッド。私は、次のことを試してみましたが、それは以下のコードのif (User.Identity.Name == "Admin")
ラインでNullExceptionをスロー:ASP.NETでのクラスレベルのユーザー情報の取得ID
public class HomeController : Controller
{
...
[HttpPost]
public IActionResult ChooseUser(string selectedUser)
{
HttpContext.Session.SetString(SessionKeySelUser, selectedUser);
return View();
}
}
他のコントローラ [管理者は、ドロップダウンからユーザー名を選択]
NullReferenceException: Object reference not set to an instance of an object.
ホームコントローラ [上の選択されたユーザー名をコントローラのすべての操作方法で使用したい場所]
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 ==" Admin "'私はエラーが発生しています:** Task 'はName **の定義を含んでいません。 –
nam
あなたはそうです。私はちょうど答えを更新しました。私はカスタムユーザーを使用します。そのため、AppUserクラスに名前を付けました。デフォルトはApplicationUserです。 –
はい、同じエラーが発生します。 – nam