ASP.NET MVC 5 - 创建自己的登录

时间:2013-12-02 15:25:11

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

HY,

我是MVC 5(或任何其他MVC)的新手。我想通过注册创建自己的自定义登录。有人可以指点我吗?

登录应该有一个简单的电子邮件和密码文本框。注册应具有存储在表(用户)中的第一/姓氏,年龄等附加数据以及具有要选择的角色的下拉框(存储在表“角色”中)。成功登录/注册后,应将用户重定向到仪表板。

或者MVC 5是否有一个很好的教程..我刚刚为MVC 4找到了一个。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

试试这个

[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;
}