登录后与用户合作,C#Identity

时间:2016-01-09 16:50:17

标签: c# .net asp.net-mvc asp.net-identity

我有以下定义用户的类:

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-class来代表登录的用户吗?

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

例如,在PHP中,您使用的是代表用户的session_id。但是你如何在C#中使用Identity?

1 个答案:

答案 0 :(得分:1)

你可以在任何控制器HttpContext.Current.User.Identity

中检索以HttpRequest身份验证的用户

我建议你验证你的请求是否通过这种方式验证HttpContext.Current.User.Identity.IsAuthenticated

在Asp.Net中,控制器中的Mvc可以使用ViewContex类

检索上下文

我希望我帮助