我創建了一個必須使用MVC模式完成的學校應用程序。首先,我試圖獲得一個簡單的註冊和登錄頁面,並運行,就好像我可以在我的數據庫中存儲和檢索一樣,然後應用程序的其餘部分應該相當簡單。我正在使用我的大學的SQL服務器作爲我的數據庫並使用ADO.NET實體數據模型(第一次)。ASP.NET MVC簡單的登錄頁面,用戶名和密碼匹配,但獲取未經授權的消息
我正在使用一個在線教程來幫助我,它似乎工作得不錯,但現在的麻煩是,當試圖使用我的表中的細節已登錄時,我得到一個'Http 401.0 - 未經授權'頁面。
我知道我在電子郵件&密碼框中輸入的內容與我在數據庫中檢索到的內容匹配,因爲我使用標籤進行了測試,並且它們都匹配。如果有幫助,我正在使用ASP.NET 4.5.2。
我的表是簡單 -
Email (pk)(varchar) - For logon
Password (varchar) - For logon
First_Name (varchar)
我的代碼如下;
UserLogon視圖 -
public class UserLogon
{
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
}
用戶管理器視圖 -
public class UserManager
{
private ac9555fEntities dre = new ac9555fEntities();
public string GetUserPassword(string userEmail)
{
var user = from o in dre.UserTables where o.Email == userEmail select o;
if (user.ToList().Count > 0)
return user.First().Password;
else
return string.Empty;
}
}
賬戶控制器 -
public class AccountController : Controller
{
public ActionResult LogOn()
{
return View();
}
//
// POST: /Account/LogOn
[HttpPost]
public ActionResult LogOn(UserLogon model, string returnUrl)
{
if (ModelState.IsValid)
{
UserManager userManager = new UserManager();
string password = userManager.GetUserPassword(model.Email);
if (string.IsNullOrEmpty(password))
{
ModelState.AddModelError("", "The user login or password provided is incorrect.");
}
if (password == model.Password)
{
FormsAuthentication.SetAuthCookie(model.Email, false);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Welcome", "Home");
}
}
else
{
ModelState.AddModelError("", "The password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
}
首頁控制器 -
public ActionResult Index()
{
return View();
}
[Authorize]
public ActionResult Welcome()
{
return View();
}
LogOn支持視圖 -
@model WebApplication5.Models.ViewModels.UserLogon
....
@using (Html.BeginForm())
{
....
@Html.EditorFor(model => model.Email)
....
@Html.EditorFor(model => model.Password)
....
<input type="submit" value="Log On" />
}
如果我已經包含了太多的/沒有足夠的代碼我不道歉,這是一個使用MVC/ADO.NET實體數據模型我的第一次。從在這裏和其他網站上查看其他內容,我覺得有一個額外的授權層不是必需的,但我嘗試過的任何解決方案都失敗了。任何人都可以發現我的代碼有缺陷嗎?
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
你從哪裏得到那個錯誤? –
在瀏覽器中,那是什麼意思? @StephenMuecke – ACostea
什麼行代碼導致它。 –