在拥有身份声明时从db检索用户信息

时间:2016-10-05 17:34:53

标签: asp.net-mvc entity-framework razor claims-based-identity

我必须承认,我是MVC的新手......所以现在一切都像是一个黑魔法。

这是代码

        public ActionResult LogIn(Models.profile profile)
    {
        if (ModelState.IsValid)
        {
            if(IsValid(profile.profile_email, profile.profile_password))
            {
                var db = new DatabaseContext();
                var _id = db.profile.Where(u => u.profile_email == profile.profile_email).Select(n => n.profile_id).FirstOrDefault();
                var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Email, profile.profile_email),
                                                          new Claim(ClaimTypes.Name, _id.ToString())}, 
                                                          "ApplicationCookie");
                var ctx = Request.GetOwinContext();
                var authmngr = ctx.Authentication;

                authmngr.SignIn(identity);

                return RedirectToAction("LogIn", "Main");
            } else
            {
                ModelState.AddModelError("", "Something goes wrong");
            }
        }

        return View(profile);
    }

我设法使用身份信息登录,这很难@_ @ 事情是那些声称类型并不像我所看到的那样灵活。 我的意思是我必须从列表中选择一些东西,我只是选择我自己的属性或其他东西。

所以,我决定将当前用户ID存储在ClaimTypes.Name中。不确定这是不是一个好主意。我甚至不确定整个登录模式是否可行; o

但......到了这一点。如果那里没有用户ID,如何仅使用此声明来检索用户信息?或者我如何使用声明标识从数据库中检索用户信息?

如果有什么我应该补充的,请告诉我; 3

0 个答案:

没有答案