配置文件;
验证信息:
Home下的Index页面,Home控制器不写。
<body>
<div>
<h1>首页</h1>
@Html.ActionLink("登录", "LogOn", "Account")
@Html.ActionLink("用户设置", "Index", "Account")
@Html.ActionLink("退出", "LogOut", "Account")
</div>
</body>
Account控制器
public class AccountController : Controller
{
// GET: Account
[Authorize]
public ActionResult Index()
{
return View();
}
public ActionResult LogOn()
{
return View();
}
[HttpPost]
public ActionResult LogOn(UserInfo u)
{
if (ModelState.IsValid && ValidateUser(u.UserName,u.PassWord))
{
return RedirectToAction("Index");
}
ModelState.AddModelError("", "账号或者密码错误");
return View();
}
//访问数据库验证用户登录信息并使用Forms验证
private bool ValidateUser(string userName,string pwd)
{
using (MVCLession31Entities db = new MVCLession31Entities())
{
var u = (from p in db.UserInfo where p.UserName == userName && p.PassWord == pwd select p).FirstOrDefault();
if (u == null)
{
return false;
}
else
{
FormsAuthentication.SetAuthCookie(userName, false);
return true;
}
}
}
//退出
public ActionResult LogOut()
{
//退出
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
}
Index页面
<body>
<div>
用户设置
@Html.ActionLink("主页","Index","Home")
</div>
</body>
LogOn页面
最上面加上这行代码;
@model _03AuthorizeFilter练习2.Models.UserInfo
<body>
@using (Html.BeginForm())
{
<table width="500" cellspacing="0" border="1" align="center">
<tr>
<td>用户名:</td>
<td>@Html.TextBoxFor(u => u.UserName)</td>
<td style="color:red">@Html.ValidationMessageFor(u=>u.UserName)</td>
</tr>
<tr>
<td>密码:</td>
<td>@Html.PasswordFor(u => u.PassWord)</td>
<td style="color:red">@Html.ValidationMessageFor(u => u.PassWord)</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="登录" />
</td>
</tr>
<tr>
<td colspan="2" style="color:red">
@Html.ValidationSummary(true)
</td>
</tr>
</table>
}
</body>
代码运行:
mvc登录运行