【发布时间】:2014-10-22 01:13:46
【问题描述】:
我正在使用 .net 为用户创建一个 Web 应用程序。注册后,用户的数据存储在我的本地 SQL 数据库中,用户必须能够使用这些登录。
目前我已成功注册用户,当我使用硬编码密码和用户名时他们可以登录,但我不知道如何检查用户的给定凭据和数据库中的凭据以检查是否这些匹配。
我进行了广泛的研究,但没有找到合适的解决方案,但令人惊讶的是无法提出可行的解决方案。
这是我当前的代码:
我的用户模型:
namespace Models
{
public class Users
{
public int Id { get; set; }
public string userName { get; set; }
public string userPassword { get; set; }
public string userEmail { get; set; }
public string userCompany { get; set; }
public class UsersDBContext : DbContext
{
public DbSet<Users> Users { get; set; }
}
}
}
我的控制器
namespace Eindwerk.Controllers
{
public class UsersController : Controller
{
private Users.UsersDBContext db = new Users.UsersDBContext();
// GET: /Users/
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Users users)
{
if (ModelState.IsValid)
{
if(users.userName == "NAAM" && users.userPassword == "WACHTWOORD")
{
FormsAuthentication.SetAuthCookie(users.userName, false);
return RedirectToAction("", "Home");
}
{
ModelState.AddModelError("", "Invalid username and/or password");
}
}
return View();
}
我的观点
@model Eindwerk.Models.Users
@{
ViewBag.Title = "Login";
Layout = "../_Login.cshtml";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<div class="panel-body">
<fieldset>
<div class="editor-field">
@Html.TextBoxFor(model => model.userName, new { @class = "form-control", Value="Username"})
@Html.ValidationMessageFor(model => model.userName)
</div>
<br />
<div class="editor-field">
@Html.TextBoxFor(model => model.userPassword, new { @class = "form-control", Value= "Password" })
@Html.ValidationMessageFor(model => model.userPassword)
</div>
<br />
<br />
<p>
<input type="submit" value="SIGN IN" class="btn btn-outline btn-primary btn-lg btn-block"/>
</p>
</fieldset>
</div>
}
所以不要使用if(users.userName == "NAAM" && users.userPassword == "WACHTWOORD")
我想正确检查用户是否有效并在我的数据库中注册,以便我可以授予或拒绝访问权限。
谁有合适的解决方案?或链接到体面的文档以解决此问题?
非常感谢任何帮助!
【问题讨论】:
-
您的问题是如何将数据从视图发送到控制器或如何检查该用户是否已经在数据库中?
-
为什么不用asp.net.identity? ?有很多模板和教程可以节省您的时间
-
实际上之前从未听说过...我只是设法让我的注册/登录成功,但一定会看看 asp.net 身份!
-
您的控制器似乎缺少
else或删除ModelState.AddModelError()周围不必要的括号 -
感谢您提出的答案,但 B2K 已经为我的问题提供了可靠的解决方案!
标签: c# asp.net-mvc razor login