您好,
我对MVC 5(或任何其他MVC)非常陌生。我想创建自己的自定义登录和注册。有人可以指导一下吗?
登录应该有一个简单的电子邮件和密码文本框。注册应该有额外的数据,如名字/姓氏,年龄等,这些数据存储在表(用户)中,并具有用于选择的角色下拉框(存储在“角色”表中)。成功登录/注册后,用户应被重定向到仪表板。
或者,是否有适用于MVC 5的好教程..我只找到了一个适用于MVC 4。
感谢您的帮助 :)
您好,
我对MVC 5(或任何其他MVC)非常陌生。我想创建自己的自定义登录和注册。有人可以指导一下吗?
登录应该有一个简单的电子邮件和密码文本框。注册应该有额外的数据,如名字/姓氏,年龄等,这些数据存储在表(用户)中,并具有用于选择的角色下拉框(存储在“角色”表中)。成功登录/注册后,用户应被重定向到仪表板。
或者,是否有适用于MVC 5的好教程..我只找到了一个适用于MVC 4。
感谢您的帮助 :)
试试这个
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = MyViewModels.checkUser(model.UserName, model.Password);
if (user!=null)
{
SignInAsync();
return RedirectToAction("Welcome");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
return View(model);
}
private void SignInAsync()
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "UserName"));
claims.Add(new Claim(ClaimTypes.Email, "User@mail.com"));
var id = new ClaimsIdentity(claims,
DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(id);
}
[Authorize]
public ActionResult Welcome()
{
return View();
}
如果您在操作中添加 [Authorize] 属性,则只有用户名称和密码被授权,它才会重定向
从数据库获取用户名和密码的函数
public static UserTable checkUser(string userName, string password)
{
DemoEntities db = new DemoEntities();
var query = (from u in db.UserTables
where u.UserName == userName && u.Password == password
select u).FirstOrDefault();
if(query!=null)
return query;
else
return null;
}