使用 SQL 使用 MVC 登录



我使用的是您在创建新项目时开始使用的默认 MVC 包。我将此代码添加到我的登录脚本中,在他们单击提交按钮后,它将尝试登录他,并且不允许我使此User.Identity.IsAuthentication工作,因此我可以在他成功登录后触发某些内容。

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        using (SqlConnection connection = new SqlConnection("server=server; database=db; user id=user; password=password"))
        {
            connection.Open();
            using (SqlCommand command = new SqlCommand("SELECT * FROM ACCOUNTS WHERE [UserName] = @param1 AND [PasswordField] = @param2 AND [Active] = 1", connection))
            {
                command.Parameters.Clear();
                command.Parameters.AddWithValue("param1", model.UserName);
                command.Parameters.AddWithValue("param2", model.Password);
                SqlDataReader adapter = command.ExecuteReader();
                if (adapter.Read())
                {
                    var user = new ApplicationUser { UserName = model.UserName, Email = model.UserName };
                    var result = await UserManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
                }
            }
            connection.Close();
            connection.Dispose();
            return RedirectToAction("Index", "Home", "Index");
        }
    }

如果他已登录,我想做类似的事情

public ActionResult IsAuthenicated()
{
     if (User.Identity.IsAuthenticated)
     {
         //go to new screen
     }
     else
     {
         //return back to login screen
     }
}
我想

它可以被称为可靠,意思是:你可能可以登录。

另一方面,它似乎一点也不安全:SQL查询意味着您以明文形式存储密码。至少您应该对所有密码进行哈希和加盐。

有许多可插拔的身份验证系统,例如 ASP.Net 成员资格(现在很旧,但仍然可以工作)或 ASP.Net 身份(新),可以为您处理繁重的工作。

相关内容

  • 没有找到相关文章

最新更新