登录后使用用户,C#标识

本文关键字:标识 用户 登录 | 更新日期: 2023-09-27 18:29:34

我有以下定义用户的类:

public class AppUser : IdentityUser
{
    public int UserType { get; set; }
    [DefaultValue("true")]
    public bool NewUser { get; set; }
}

我在AuthController中使用以下代码登录用户:

public async Task<ActionResult> LogIn(LogInModel model)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }
            var user = await userManager.FindAsync(model.Email, model.Password);
            if (user != null)
            {
                await SignIn(user);
                return Redirect(GetRedirectUrl(model.ReturnUrl));
            }
            // user authN failed
            ModelState.AddModelError("", "Invalid email or password");
            return View();
        }

这是我的控制器,当用户登录时,它会处理所有内容:

   [Authorize]
    public class HomeController : Controller
    {
        private readonly UserManager<AppUser> userManager;
        public HomeController()
       : this(Startup.UserManagerFactory.Invoke())
        {
        }
        public HomeController(UserManager<AppUser> userManager)
        {
            this.userManager = userManager;
        }
        // GET: Home
        public ActionResult Index()
        {
            var ctx = Request.GetOwinContext();
            var authManager = ctx.Authentication;
            //var rolesForUser = userManager.GetRoles(user.Id);
            //Kolla om det är new user
            //Om det är new user, visa "setup"-sida där man kan konfa sitt konto
            //Annars renderar vi default
            return View();
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing && userManager != null)
            {
                userManager.Dispose();
            }
            base.Dispose(disposing);
        }
    }

我的问题是:我如何与登录的用户合作?用户登录后,我如何访问他/她?我可以在这里使用AppUser类来表示登录的用户吗?

AppUser是数据库中相应用户表的描述,因此我如何访问属于登录用户的所有这些属性?我可以使用var ctx = Request.GetOwinContext();中的一些信息吗?

例如,在PHP中,您使用的是表示用户的session_id。但是在C#中,您是如何使用Identity实现的呢?

登录后使用用户,C#标识

您可以通过这种方式在任何控制器HttpContext.Current.user.Identity 中检索在HttpRequest中验证的用户

如果您的请求以这种方式进行身份验证,我建议您进行验证HttpContext.Current.User.Identity.IsAuthenticated

在控制器中的Asp.Net Mvc中,您可以使用类ViewContex 检索上下文吗

我希望我帮助了