我必须承认,我是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