从数据库中检索用户信息并同时具有身份声明

8 浏览
0 Comments

从数据库中检索用户信息并同时具有身份声明

我必须承认,我对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("", "出了些问题");
        }
    }
    return View(profile);
}

我设法使用身份验证登录,这真的很难 @_ @

问题是,从我所见,这些claimtype并不是太灵活。

我的意思是,我必须从列表中选择一些东西,然后我只是选择了自己的属性或其他什么东西。

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

但是...重点是,如果这个claim中没有用户ID,我如何仅通过这个claim检索用户信息?或者我如何在使用claims identity时从数据库中检索用户信息?

如果有任何需要添加的内容,请告诉我 ;3

0